主页 > 游戏开发  > 

STM32HAL库UART串口发送数据实验

STM32HAL库UART串口发送数据实验
一、实验目标

通过STM32的UART串口发送字符串数据到PC端串口调试助手,验证通信功能。


二、硬件准备

主控芯片:STM32F103C8T6。

串口模块:USB转TTL模块。

接线说明:

STM32的USART1_TX(PA9) → USB-TTL模块的RX。STM32的USART1_RX(PA10) → USB-TTL模块的TX。STM32的GND → USB-TTL模块的GND。开发板供电:USB或3.3V电源。


三、软件配置(STM32CubeMX) 1. 新建工程

打开STM32CubeMX,选择芯片型号STM32F103C8T6。

配置系统时钟

2. 配置UART

启用USART1:

左侧引脚图找到USART1,模式选择 Asynchronous(异步通信)。

模式参数清单

自动分配引脚PA9(TX)和PA10(RX)。

参数设置:

生成代码


四、代码实现 发送数据函数

在main()中添加发送代码:

uint8_t Number = 0x5a; uint8_t Array[] = {1,2,3,4,5}; char ch = 'a'; char *str = "Hello World"; HAL_UART_Transmit(&huart1,&Number,1,HAL_MAX_DELAY); HAL_UART_Transmit(&huart1,Array,5,HAL_MAX_DELAY); HAL_UART_Transmit(&huart1,(uint8_t*)&ch,1,HAL_MAX_DELAY); HAL_UART_Transmit(&huart1,(uint8_t*)&str,strlen(str),HAL_MAX_DELAY);
五、代码烧录与验证 1. 烧录程序

使用ST-Link或J-Link工具将代码烧录到STM32。

2. 串口调试助手设置

打开PC端串口调试工具。

选择正确的COM口。

设置参数:波特率 115200,8数据位,无校验,1停止位。

3. 实验结果

按下复位键后调试器接收区显示如下数据。


六、关键代码解析 HAL_UART_Transmit函数

HAL_UART_Transmit 是 STM32 HAL 库中用于通过 UART(通用异步收发器)发送数据的核心函数。它以阻塞(同步)方式工作,即函数会等待数据发送完成或超时后才返回。

HAL_StatusTypeDef HAL_UART_Transmit( UART_HandleTypeDef *huart, // UART 外设句柄 uint8_t *pData, // 待发送数据的缓冲区指针 uint16_t Size, // 待发送数据的字节数 uint32_t Timeout // 超时时间(单位:毫秒) );

参数解析

参数类型说明huartUART_HandleTypeDef*指向 UART 配置结构体的指针(如 &huart1),包含波特率、数据位等配置信息。pDatauint8_t*待发送数据的缓冲区首地址。需确保数据在发送期间有效(如全局变量或静态数组)。Sizeuint16_t发送数据的字节数。若为 0,函数直接返回 HAL_ERROR。Timeoutuint32_t超时时间(毫秒)。若超时前未完成发送,函数返回 HAL_TIMEOUT。

返回值

返回值为 HAL_StatusTypeDef 枚举类型:

HAL_OK : 数据发送成功。

HAL_ERROR : 参数错误(如 huart 未初始化或 Size=0)。

HAL_BUSY : UART 正忙(如上一次传输未完成)。

HAL_TIMEOUT : 发送超时(未在指定时间内完成)。


七、常见问题排查

无数据接收:

检查接线(TX/RX是否交叉连接)。

确认波特率一致(STM32与PC端均为115200)。

检查USB-TTL模块驱动是否安装。

代码未执行:

确认烧录时复位模式正确(如NRST引脚接复位按钮)。

标签:

STM32HAL库UART串口发送数据实验由讯客互联游戏开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“STM32HAL库UART串口发送数据实验