我设置adc通过dma模式传输数据,想通过定时器控制每隔一段时间开启一次传输,但是发现进入debug里面,数组的数据无法刷新,但是adc寄存器的数据一直都在刷新,也就是说adc的数据无法通过dma传输,如何我重新初始化adc,结果就可以了,数组的数字可以刷新了。
总之就是想问在adc循环模式,通过dma传输数据的情况下,一次传输完成后如何再开始下一次啊,都需要配置什么啊,还是需要调用哪个函数。把adc什么的全重新初始化一次太占用资源了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
0:最后一次传输后不发出新的 DMA 请求(在 DMA 控制器中进行配置)
1:只要发生数据转换且 DMA = 1,便会发出 DAM 请求
---------------------------------
不是单次模式,是循环模式,adc一直都在工作,dma设置采样50次(我想的是采样完成后应该是自动停止),然后在定时器中断里将这50个数处理完后,我想要重新开启dma刷新数组的数,而且ADC_SoftwareStartConvCmd(ADC1, ENABLE);这个函数为什么不能用啊。
如果是这样,就不能循环,只能单次。不然定时器有什么用,第一次转换完成马上开始另一次转换,定不住啊。
2.dma是随adc完成触发的,处理数据放到dma完成中断里才对。
3.ADC_SoftwareStartConvCmd(ADC1, ENABLE);例程应该有如何使用吧。
你可以把你初始化代码贴出来让论坛的高手给你看看。
一周热门 更多>