上一节我们使用中断结合环形fifo,实现了比较方便、高效地串口收发,这个方法在几乎所有的单片机上都可以使用,就连最基础的51单片机也能支持。而到了stm32这款强大的单片机,有更多的用法可以实现高效的串口收发,本节我们就介绍使用DMA传输串口数据。
先简单介绍一下DMA,DMA全称为:Direct Memory Access,即直接存储器访问。它可以独立地将数据从一个地址空间复制到另外一个地址空间,而不占用CPU的资源。
DMA尤其在高速、大容量的数据传输时特别有用:如果使用中断传输,CPU会在传输数据的一段时间内多次进入中断处理,也会占用很多CPU的时间;而使用DMA,CPU只用作一些初始化操作,之后DMA会自动将数据从一个地址复制到另一个地址,数据量很大时,能减轻很多CPU的工作。
1)cubemx生成代码
首先还是在cubemx中生成代码,选择器件、设置SYS(调试接口)、设置RCC(外部晶振时钟源)。
然后设置串口引脚,选择uart1,异步串口,选完后,已经使用的串口引脚PA9和PA10会变成绿色;然后选择开启串口全局中断(使用DMA时中断一定要打开):
1万+




被折叠的 条评论
为什么被折叠?



