1. 程式人生 > >STM32f0晶片ADC連續讀取值相同

STM32f0晶片ADC連續讀取值相同

是因為ADC_ChannelConfig這個函式問題

其中 ADCx->CHSELR |= (uint32_t)ADC_Channel 對暫存器賦值使用了“|”,這會造成下一次迴圈轉換時仍然轉換最高位通道
解決辦法是,在每次呼叫 ADC_ChannelConfig 之後,再對暫存器寫入

if(index == X)
{
ADC_ChannelConfig(ADC1,ADC_Channel_7 , ADC_SampleTime_55_5Cycles); //µ¥¶ÀÅäÖÃÐèÒª²ÉÑùµÄͨµÀ
ADC1->CHSELR = ADC_Channel_7;
}else
{
ADC_ChannelConfig(ADC1,ADC_Channel_6 , ADC_SampleTime_55_5Cycles); //µ¥¶ÀÅäÖÃÐèÒª²ÉÑùµÄͨµÀ
ADC1->CHSELR = ADC_Channel_6;
}