首页> 杂项> >STM32 ADC模块初始化 单通道

STM32 ADC模块初始化 单通道

时间:2023-07-06 浏览次数:1544

1、ADC模块初始化

//初始化ADC                                                           
void  Adc_Init(void)
{     
    ADC_InitTypeDef ADC_InitStructure; 
    GPIO_InitTypeDef GPIO_InitStructure;
 
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA |RCC_APB2Periph_ADC1, ENABLE );      //使能ADC1通道时钟
 
    RCC_ADCCLKConfig(RCC_PCLK2_Div6);  //设置ADC分频因子6 72M/6=12,ADC最大时间不能超过14M
 
    //PA6 作为模拟通道输入引脚                         
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;  //模拟输入引脚
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);    
 
    ADC_DeInit(ADC1);  //复位ADC1 
 
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;    //ADC1工作在独立模式
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;  //模数转换为单通道模式
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;    //模数转换为单次转换模式
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;    //转换由软件而不是外部触发启动,如需外部触发可自己修改
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;  //ADC数据右对齐
    ADC_InitStructure.ADC_NbrOfChannel = 1;    //顺序进行规则转换的ADC通道的数目
    ADC_Init(ADC1, &ADC_InitStructure);  //根据ADC_InitStruct中指定的参数初始化外设ADCx的寄存器   
  
    ADC_Cmd(ADC1, ENABLE);    //使能ADC1
    ADC_ResetCalibration(ADC1);    //使能复位校准  
    while(ADC_GetResetCalibrationStatus(ADC1));    //等待复位校准结束
    ADC_StartCalibration(ADC1);     //开启AD校准
    while(ADC_GetCalibrationStatus(ADC1));     //等待校准结束
 
}

2、读取ADC数值

uint16_t Read_Adc(void)   

    ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_239Cycles5 );    //ADC1,ADC通道6,第一个转换,采样时间为239.5周期                      

    ADC_SoftwareStartConvCmd(ADC1, ENABLE);        //使能指定的ADC1的软件转换启动功能
    while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));//等待转换结束
    return ADC_GetConversionValue(ADC1);    //返回最近一次ADC1规则组的转换结果
    // 如果是双ADC模式,则改用ADC_GetDuelModeConversionValue()函数
}


    十年网站建设

      建立本站初衷,是为了记录学习过程中掌握的方法,或者项目开发过程中遇到问题的解决方案,防止后面遇到同样的问题时却忘了当时的解决方法,以此有个地方回顾!

      需求合作:479083651@qq.com
      发送邮件请说明您的需求!

    阅读排行