DMA一直以来也是一个只闻其名的模块,在我的实际的实践中几乎没有用到。也许是我解决的问题大都不需要这么高端的功能就能够cover得了吧!

还没有看文档,直接看了一下SDK的IDE可配置信息,似乎实现这个功能基于SDK的话是很容易的。

287_基于DMA的串口收发_配置信息

SDK中做相应的配置,传输模式不再使用中断,而是使用DMA。之后,选择DMA通道。这个通道是需要在DMA的模块中配置的。

287_基于DMA的串口收发_github_02

代码生成,之后,初始化DMA,然后做收发的测试。

287_基于DMA的串口收发_ide_03

首先,看得出串口的发送功能是OK的,这个打印显示功能还是正常的。接下来看看接收的功能:

287_基于DMA的串口收发_ide_03

从上面的结果看,这个接收功能也是可以工作的。但是,之前发现的接收数据丢失的问题似乎还是存在。后面,这个问题还是需要进一步分析解决。