下面代码是一个标准DMA设置,当然实际应用中可根据实际情况进行裁减: DMA_DeInit(DMA_Channel1); 上面这句是给DMA配置通道,根据ST提供的资料,STM3210Fx中DMA包含7个通道(CH1~CH7),也就是说可以为外设或memory提
不需要的,一次就可以了.但你需要设置为扫描模式,单次模式需要手动启动ADC转换.
肯定不是的,找个开发的例子,好好看看
看一下这句是不是你需要的.DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
……这本来就是将一个内存块的地址赋给“起始地址”这个变量……赋地址的操作遍地都是,等你多看些程序,习惯了自然也就不会大惊小怪了.
失能DMA,重写传输个数与内存地址,再使能DMA即可
是的.但准确点说,应该是要停止DMA的传输行为(注意不是关闭,一般关闭指得是DMA时钟去使能),然后重新配置(可以是部分参数),然后在需要时启动传输. 其实所有编程行为,无论软硬都要遵守一个原则就是.所有操作必须在确定的已知状态下开始,完成后必须进入确定的已知状态.确定的已知状态,其中包括 “确定的未知状态”.
第二个方法是可行的,不过需要你在DMA中断里改变目的地址.在中断里首先禁止DMA,接着修改目的地址,然后再使能DMA.
可以看下STM32F10x常见应用解析.pdf 将DMA设置成循环模式.
不占用cpu 提高数据吞吐量