CubeMx配置生成代码系列(二) 串口DMA接收不定长数据

时间:2024-03-14 15:35:26

串口DMA接收不定长数据

前言

上一期我们介绍如何利用CnbeMx工具配置STM32的串口空闲接收不定长数据,在项目实际使用中通常存在大量的数据交互,这会占用CPU的大部分时间。所以本章介绍在上一期的基础上加上DMA传输,解放CPU。

一、DMA是什么?

DirectMemoryAccess(存储器直接访问)是指一种高速的数据传输操作,允许在外部设备和存储器之间直接读写数据,既不通过CPU,也不需要CPU干预。整个数据传输操作在一个称为“DMA控制器”的控制下进行。CPU除了在数据传输开始和结束时做一点处理外,在传输过程中还可以进行其他的工作。这样,在大部分时间里,CPU和输入输出都处于并行操作,因此使整个计算机系统的效率大大提高

二、配置步骤

1.CubeMx配置(关于时钟、串口等配置参考上一张内容),开启DMA传输

CubeMx配置生成代码系列(二) 串口DMA接收不定长数据
2.配置DMA参数
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据
3.开启DMA及串口中断(DMA中断默认已开启)
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据

三、代码更改

1.添加printf函数支持
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据
2.使能串口中断
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据
3.在中断中添加发送函数
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据
4.添加发送完成判断
CubeMx配置生成代码系列(二) 串口DMA接收不定长数据

总结

通过以上配置即可完成串口DMA接收和发送不定长数据。