一个基于HAL库的串口通信操作,使用的是STM32F411RE,基础配置代码是通过STM32CubeMX生成的,个人操作记录,希望对需要的朋友有用。
工具/原料
STM32CubeMX
Keil
串口调试工具
用MX生成HAL基础代码
1、新建一个STM32CubeMX工程,选择STM32F411RE芯片,切换到Pinout页。
2、展开“USART2”,选择“Mode”右侧的盲褓梆尺组合框,选择“Asynchronous”即异步模式。配置完成后右边的引脚会有相应提示,USART2对应的端口是TX-PA2,RX-PA3。
3、切换到“Configuration”页,可以看到刚使能的USART2,点击它。
4、在弹出的“USART2 Configuration”对话框中选择“Parameter Settings”,配置好波特率、停止位等信息。比如我这里选择的波特率是9600,8位数据,无校验,1个停止位。
5、切换到“GPIO Settings”配置端口模式,一般保持默认即可,主要是需要用串口的复用模式。
6、NVIC Settings是配置中断向量,因为只是测试一下串口,这里暂不做选择。
7、代码配置完成,点击菜单栏的“Project”->"Generate Code"生成代码。
8、代码生成的配置这里就不多说了,请看图,有不明白的可以百度下。
补全HAL功能代码
1、打开刚刚用MX生成的工程,这里选择的是Keil工程。
2、在main函数最前面的用户区域定义一个字符串“Hello world !\r\n”,记得加回车换行,这个用于测试串口。
3、在main函数的主循环中添加一个串口发送函数:HAL_UART_Transmit(争犸禀淫&huart2, myStr, strlen(myStr), 1000);函数的作用是以阻塞方式将保存在myStr中的数据发送到huart2指向的串口,发送长度是strlen(myStr)也就是这个字符串的长度,1000是超时允许的最大值这个单位视SysTick而定,一般是1ms。
4、另外附上其它串口初始的主要代码,我的的HAL库版本是STM32Cube_FW_F4_V1.21.0
5、串口调试如下,可以看到通信是成功的,注意波特率等基本参数要匹配。