stm32407使用ad转换,引脚悬空时读到的值是0.6v左右,任意输入一个电压,变成2.1v左右,并且不会改变,是什么原因

2019-07-20 05:34发布

adc初始化
void  Adc_Init(void)
{   
  GPIO_InitTypeDef  GPIO_InitStructure;
        ADC_CommonInitTypeDef ADC_CommonInitStructure;
        ADC_InitTypeDef       ADC_InitStructure;
       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

  //Ïè3õê¼»ˉADC1í¨μà5 IO¿ú
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PA5 í¨μà5
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

        RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,ENABLE);         
        RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1,DISABLE);                 

       
  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;//¶àá¢Ä£ê½
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div4;
  ADC_CommonInit(&ADC_CommonInitStructure);ˉ
       
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;       
  ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;       
  ADC_InitStructure.ADC_NbrOfConversion = 1;
  ADC_Init(ADC1, &ADC_InitStructure);
       

        ADC_Cmd(ADC1, ENABLE);       

}
                                  

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。