比如如果只是采用adc1的话,要一个一个按顺序来,用库写程序的话有一句
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 1,ADC_SampleTime_1Cycles5)
里面那个1表示在这一次周期的采样顺序,采样3个点就是
ADC_RegularChannelConfig(ADC1,ADC_Channel_3, 1,ADC_SampleTime_1Cycles5)
ADC_RegularChannelConfig(ADC1,ADC_Channel_2, 2,ADC_SampleTime_1Cycles5)
ADC_RegularChannelConfig(ADC1,ADC_Channel_5, 3,ADC_SampleTime_1Cycles5)
其中的那个1,2,3就是顺序
如果用adc1和adc2的话是可以同时采样的……
但是只用1个adc的话16处采样的返回值只写在对应的ADC_DR里面,需要分时读取;
同样,adc1和adc2是有各自不同的adc_dr;
读取,可以通过dma传出来读取。在dma的设置里有关于adc的……
或者在库函数里也有直接读取的。。
或者。。直接去读寄存器也可以……
程序中使用ADC1采样一个外部输入,一个内部参考电压的电压,其中出现了两通道的数据错位问题,即有时数组第
一个数与该数组第二个数据交换了,在网上找了很久=都
没神马结果,最后只能将ADC的连续转换模式设置成单次转换
即ADC_Init(ADC1, ADC_ConversionMode_Continuous, ADC_Resolution_12Bit, ADC_Prescaler_1)改成
ADC_Init(ADC1, ADC_ConversionMode_Single, ADC_Resolution_12Bit, ADC_Prescaler_1)
在每次一组数据传 输完成产生一次DMA中断的时候再启动下
一次adc转换。这样数据才不至于错位。
***最后,如果读者有一些在adc连续转换模式解决数据错位的办法,请指教***
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)