第一步——串口引脚查询

方法一:引脚图

选择自己使用的串口(如UART4、USART1等),通过查阅引脚图找到相应的RX与TX的引脚。

方法二:Cubemx查询

在左侧一栏中打开Connectivity

这里面会显示当前芯片所支持的所有设备类型

 

这里我以UART4为例,进行说明。
模式选择为异步通信,下表总结了同步与异步的使用场景,按需选择即可。

应用场景 同步通信(USART/SPI/I2C) 异步通信(UART/RS-232/RS-485)
调试与日志输出 ❌ 不适用 ✅ 首选(STM32通过UART连接PC串口助手)
高速数据采集 ✅ 高频ADC数据传输(>1Mbps) ❌ 速率不足
存储器接口 ✅ SPI Flash、SD卡通信 ❌ 不适用
传感器接口 ✅ 高精度传感器(IMU、高速ADC) ✅ 低速传感器(温湿度模块、GPS)
工业控制 ✅ PLC高速总线、电机控制 ✅ Modbus RTU(RS-485长距离通信)
消费电子产品 ✅ 显示屏驱动(SPI)、触摸屏控制 ✅ 蓝牙/Wi-Fi模组AT指令通信
汽车电子 ✅ CAN总线(本质同步)、ECU通信 ✅ OBD-II诊断接口(UART协议)
多设备组网 ✅ I2C总线连接多从设备(EEPROM、传感器集线器) ✅ RS-485多节点通信(需地址寻址)
实时性要求高系统 ✅ 音频流传输、实时控制系统 ❌ 时序抖动敏感场景不适用
引脚资源紧张设计 ❌ 需CLK+数据线(至少3线) ✅ 仅需TX/RX(2线)
长距离通信(>10m) ❌ 时钟同步困难 ✅ RS-485(可达1200米)
低功耗设备 ❌ 时钟持续运行功耗高 ✅ 可休眠+唤醒接收(如NB-IoT模块)

Configuration里选择GPIO Settings,就可以看见对应的引脚了。
在Cubemx里面查找是最快捷的,还能顺便配置一下串口,一石二鸟。

第二步——接线

由第一步可知,TX对应PC10,RX对应PC11。
USB TO TTL的TXD接PC11,RXD接PC10。

第三步——配置中断

NVIC Settings里面勾选UART4的中断。

点击生成代码,你会在stm32f1xx_it.c文件中找到相应的中断服务函数

右键点击可以跳转到函数的定义,然后下滑可以找到相应的回调函数。

这里以接受回调函数为例进行讲解。这里的__weak代表的是弱定义,用户可以在其他地方再次定义。

第四步——编写业务代码

根据第三步中找到的回调函数,在main.c中编写代码。

推荐写在此位置,比较常见一点。

注意事项

必须调用HAL_UART_Receive_IT两次(初始化+回调函数内)
使用了中断就必须在while循环前调用一下HAL_UART_Receive_IT()函数,并且在回调函数里头也需要再次调用,否则结果就是中断接收只会触发一次。

这里不推荐在while循环里进行中断接收,因为会占用GPU资源。

 

 

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐