我的设计思路是:使用DMA来读取ADC,连续20次,存放在XRAM,中断后,把20个数据累加求一个平均值,存放到另外一个数组,在最后退出DMA中断前,再次启动DMA,就是DMA_Start();这个宏定义。
但是发现在DMA中断里,运行这个宏定义,程序就会乱套,只能在主程序大循环里启动才是正常的结果,但是这样一来,DMA的意义就没有了。
在官方的ADC-DMA方式读取DEMO例程中,也是把这个重启宏定义放在大循环里,测试正常,但是当我把这个重启放到DMA中断程序里,串口输出就乱套了。
具体输出变化,2张图如下。
烦请用过这个ADC-DMA读取的朋友帮忙,谢谢。 |