錯誤說明:
使用cube生成多路AD采集,非中斷,非DMA模式下,軟體切換通道,發現會出現隻有第一路的值是正确的,後面的幾路值都不對,切換通道部分代碼如下:
ADC_ChannelConfTypeDef sConfig;
sConfig.Channel=ch;
sConfig.Rank=ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc,&sConfig);
HAL_ADC_Start(&hadc);
原因是這樣切換并沒有将CHSELR寄存器清掉,需改成:
ADC_ChannelConfTypeDef sConfig;
hadc.Instance->CHSELR = 0;
sConfig.Channel=ch;
sConfig.Rank=ADC_RANK_CHANNEL_NUMBER;
HAL_ADC_ConfigChannel(&hadc,&sConfig);
HAL_ADC_Start(&hadc);
若有了解不對的地方,還請提出來,大家交流學習。