您现在的位置: 主页 > MCU > 单片机技术应用 > STM32F0多路ADC采样中的BUG和解决方案 -
本文所属标签:
为本文创立个标签吧:

STM32F0多路ADC采样中的BUG和解决方案 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-07 

[导读]
uint32_t ADC_Detect(uint32_t AD_Channel) { hadc.Instance->CHSELR = 0; ADC_ChannelConfTypeDef sConfig; sConfig.Channel = AD_Channel; sConfig.Rank = ADC_RANK_CHANNEL_NUMBER; s

 

本文引用地址: http://www.21ic.com/app/mcu/201804/764236.htm

 

uint32_t ADC_Detect(uint32_t AD_Channel) 

 

{

 

hadc.Instance->CHSELR = 0;

ADC_ChannelConfTypeDef sConfig;

sConfig.Channel = AD_Channel;

sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;

sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;

HAL_ADC_ConfigChannel(&hadc, &sConfig);

 

uint32_t ADC_result;

/*ADC START*/

if(HAL_ADC_Start(&hadc)!=HAL_OK)

{

while(1)

{

}

}

/*Wait for ADC completed*/

if (HAL_ADC_PollForConversion(&hadc, 10) != HAL_OK)

{

while(1)

{

}

}

else

{

/*Get the converted value of regular channel*/

ADC_result = HAL_ADC_GetValue(&hadc);

HAL_ADC_Stop(&hadc);

//ADC_result =((ADC_result*3300)>>8);

return ADC_result;

}

}

使用CUBE生产的ADC无法配置多路采样,多路采样采集值不对,研究后发现是底层函数没有将CHANNEL清零导致的

 

 

只需要在函数中增加 hadc.Instance->CHSELR = 0; 手动清0 寄存器即可。

 

 

 



              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > STM32F0多路ADC采样中的BUG和解决方案 -
 

"STM32F0多路ADC采样中的BUG和解决方案 -"的相关文章

网站地图

围观()