当前位置:首页 > 单片机 > 单片机
[导读] 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

 

 

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

 

 

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭