我打算利用定时器,每定时200us顺序采样8路AD的通道,发现最后采集来的结果和通道的数据对应不上,我减小AD的通道数,发现当只有3路通道的时候是正常的,当有第四路的时候就出现问题了。9M的AD时钟,单次采样,中断程序如下,求各位指点一二
void TIM3_IRQHandler(void)
{
if ( TIM_GetITStatus(TIM3 , TIM_IT_Update) != RESET )
{
TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update);
ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_1Cycles5);
delay_us(2);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
AD_value[0][yangdian]=ADC_GetConversionValue(ADC1);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 1, ADC_SampleTime_1Cycles5);
delay_us(2);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
AD_value[1][yangdian]=ADC_GetConversionValue(ADC1);
ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 1, ADC_SampleTime_1Cycles5);
delay_us(2);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
AD_value[2][yangdian]=ADC_GetConversionValue(ADC1);
ADC_RegularChannelConfig(ADC1, ADC_Channel_3, 1, ADC_SampleTime_1Cycles5);
delay_us(2);
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
AD_value[3][yangdian]=ADC_GetConversionValue(ADC1);
}
|