由于项目的要求,由于采用传统的方式控制USART发送数据的时间占用CPU过多的时间,导致裸机程序的误判(少判),所以想起了采用DMA控制器控制SUART 数据的发送。
之前没有接触过DMA的概念,现学现用呗!!!而导师的意见是,参考别人写的程序,修改修改,解决问题就行了,不必深入了解。果然,一搜索,一大堆的程序,修改修改,
利用到项目中,不到半天问题解决了。感叹DMA可真是好用啊,所以决定学习一下这个神奇的东西,参考《中文参考手册》,硬着头皮看一遍下去,云里雾里。。。。,脑子里
只有几个关键字:FIFO,突发增量传输,数据宽度,存储器,外设。再看了看自己的程序:
DMA_InitStructure.DMA_MemoryBurst=DMA_MemoryBurst_Single;
MA_InitStructure.DMA_PeripheralBurst=DMA_PeripheralBurst_Single;
DMA_InitStructure.DMA_FIFOMode=DISABLE;
DMA_InitStructure.DMA_FIFOThreshold=DMA_FIFOThreshold_Full;
----->FIFO禁止了,也不使用突发传输了。
脑子里浮现一个念头,要是我允许Fifo,使用突发传输会是怎么样呢,会不会一次发送几组相同的数据呢?。。二话不说,改呗。下载测试。。。。没有任何的变化。。。没有得到预期的结果,很失望!!于是乎,在看一遍《手册》 |