不久前,本人需要用多路STM32ADC采样,用DMA传输,发现数据错位问题,真的很恼火。有时候发现ADC位错一位的有,错两位的有,也有三位四位的,查查网上大神,一般都是说ADC不能在连续转换模式下工作就OK了,但是我程序的问题依旧。前几天,不经意间发现,原来我程序的ADC转换是先早开于DMA转换的。也就是说
ADC_Config();先于DMA_Config();开启,而 ADC_Config();ADC_SoftwareStartConvCmd(ADC1, ENABLE);已经打开了。
这意味着先开了ADC转换,再开DMA转换,ADC转换了一段时间,DMA才来得及反应的!!!之后吧ADC_SoftwareStartConvCmd(ADC1, ENABLE);在ADC_Config();去掉,然后在再DMA_Config();后开启,转换就得到我想要的结果了!