在跌倒之前爬起来才发现,没有注定的阴霾,只有准备不足的微笑
DMA:Data Memory Access,直接存储器访问。主要功能:可以把数据从一个地方搬到另一个地方,而且不占用cpu
(可用于led,lcd)
DMA1和DMA2各有7个通道,可以实现P(外设)->M(内存),M->P,M->M
DMA功能框图:
1,DMA请求,
2,通道 (DMA1 7个通道 DMA2 5个通道)
3,仲裁
<1>软件 DMA_CCRX(寄存器)
<2>硬件 同一个DMA:先比较优先级,在比较通道号,通道号越小,优先级越高。
不同DMA:DMA1>DMA2
DMA编程: (以stm32为例)
1 DMA_Initdef结构体初始化
{结构体成员:1 外设地址DMA_CPAR 存储器地址DMA_CMAR 传输方向,DMA_CCR:DIR (哪来到哪去)
2 传输数目DMA_CNDTR 外设地址是否递增DMA_CCRx:PINC 外设地址是否递增DMA_CCRx:MINC 外设数据宽度DMA_CCRx:PSIZE 存储数据宽度DMA_CCRx:MSIZE (数量与单位)
3 传输模式DMA_CCRx:CIRC 传输过半,传输完成,传输错误DMA_ISR(完成度)
}