DMA(Direct Memory Access),直接存储器访问。DMA传输方式无需CPU直接控制传输,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU效率大大提高。stm32f103有2个DMA控制器,DMA1有7个通道,DMA2有5个通道,专门用来管理来自外设对存储器的访问请求,还有一个仲裁器来协调各个DMA请求的优先权。
一:DMA各通道请求
例如,串口1发送的DMA,就要用到DMA1的通道4(也就是说通道与各通讯口是相互对应的)
参考手册


二.DMA1通道4(串口1发送)配置步骤
①设置外设地址
DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7)

②设置存储器地址
存储器地址通过DMA1_CMAR设置


Eg:DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址
③设置传输数据量
Eg:DMA_CHx->CNDTR=cndtr; //DMA1,传输数据量
④设置通道4的配置信息


⑤使能DMA1通道4,启动传输
DMAx_CCRx 最低位开启DMA传输。
注意要设置USART1的使能DMA传输位,通过USART1->CR3的第七位设置,这样就可以启动一次USART1的DMA传输了。
⑥DMA中断状态显示及清除
DMA中断状态寄存器(DMA_ISR)





DMA1通道4(串口1发送)应用










