STM32之DMA详解

发布于 2014-10-14  1.29k 次阅读


DMA(Direct Memory Access),即直接内存存储,在一些数据的传输中,采用DMA方式,从而将CPU解放出来。让CPU有足够的时间处理其他的事情。

stm32使用DMA的相关操作:

1、DMA的配置

要配置的有DMA传输通道选择,传输的成员和方向、普通模式还是循环模式等等。

注:

1、传输通道:通过查表,串口1的发送对应的是DMA的通道4,所以此处选择通道4.

2、DMA传输方式:

(1) DMA_Mode_Normal,正常模式,当一次DMA数据传输完后,停止DMA传送,对于上例而言,就是DMA_PeripheralDataSize_Byte个字节的传送完成后,就停止传送。

(2) DMA_Mode_Circular

循环模式,当传输完一次后,重新接着传送,永不停息。

2、外设的DMA方式设置

将串口1设置成DMA模式:

3、待传输数据的定义和初始化

4、开始DMA传输(使能对应的DMA通道)

5、DMA传输的完成

当传输完成后,就会跳出上面的死循环。
下面是一个例程,测试过,可以运行!

 

需要说明的是,由于DMA传输不需要CPU的参与。所以在调试的时候会发现,在我们单步停止的时候,串口依然不停地向外发送数据。


公交车司机终于在众人的指责中将座位让给了老太太