STM32三路串口DMA收发配置

三路串口的 DMA 收发配置,效率是真的高,适合你在 STM32 上搞多通道通信的场景。像机器人、工业控制或者带多个传感器的系统,用了 DMA 之后,CPU 几乎不用管串口数据,省下不少资源做别的事。

STM32 的USARTUART本身就蛮灵活的,再搭上DMA这套组合,三路同时跑起来都没啥压力。要做的就是把 DMA 通道分配好,不冲突就行。要注意,每个串口收发都得占一个 DMA 通道,别配重了。

配置过程也不难,主要几步:DMA 参数配置串口初始化通道分配中断回调,再就是实际数据传输。比如接收时先把缓冲区准备好,DMA 直接往里塞数据,速度快得。发送也一样,数据一到位直接起飞。

嗯,不过还是建议你开 DMA 中断,一来能及时接收到的数据,二来也方便调试,出问题能早点发现。尤其是收得多的时候,接收回调里最好加点保护逻辑,比如检测溢出、校验数据啥的。

用起来还挺香的,尤其在你要搞多个串口同时收发数据的时候。推荐你配合STM32CubeIDE调一调,中断优先级和 DMA 映射那里别搞错了。要是你还不太熟 STM32 的 DMA 机制,可以先看看这几个参考资料:

rar 文件大小:1.69MB