您好,欢迎访问上海现易电子元器件有限公司网站!

021-51870898
021-51870898   18019251567
4新闻资讯
您的位置: 首页 ->  新闻资讯 -> 单片机

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

文章出处:单片机 责任编辑:上海现易电子元器件有限公司 发表时间:2020-11-10

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


上海现易电子元器件有限公司 版权所有 未经授权禁止复制或镜像

CopyRight 2020-2025 www.xy777.net All rights reserved   沪ICP备2020031792号

友情链接:

电话

易经理

18019251567

微信

易经理

易经理

顶部

咨询