您的位置 首页 制造

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

STM32F0多路ADC采样中的BUG和解决方案-使用CUBE生产的ADC无法配置多路采样,多路采样采集值不对,研究后发现是底层函数没有将CHANNEL清零导致的.只需要在函数中增加 hadc.Instance->CHSELR = 0; 手动清0 寄存器即可。

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 寄存器即可。 

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/347720.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部