STM32F042G4 ADC使用问题

2019-08-17 07:44发布

[mw_shl_code=c,true]void ADC_Init(void)
{
        GPIO_InitTypeDef GPIO_InitStruct;
  ADC_ChannelConfTypeDef sConfig;
       
        __HAL_RCC_ADC1_CLK_ENABLE();
       
  /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)*/
  hadc.Instance = ADC1;
  hadc.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;
  hadc.Init.Resolution = ADC_RESOLUTION_12B;
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD;
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc.Init.LowPowerAutoWait = DISABLE;
  hadc.Init.LowPowerAutoPowerOff = DISABLE;
  hadc.Init.ContinuousConvMode = DISABLE;
  hadc.Init.DiscontinuousConvMode = DISABLE;
  hadc.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc.Init.DMAContinuousRequests = DISABLE;
  hadc.Init.Overrun = ADC_OVR_DATA_OVERWRITTEN;
  if (HAL_ADC_Init(&hadc) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  /**Configure for the selected ADC regular channel to be converted.*/
  sConfig.Channel = ADC_CHANNEL_4;
  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
  sConfig.SamplingTime = ADC_SAMPLETIME_13CYCLES_5;
  if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

        /*Configure ADC pin*/
        GPIO_InitStruct.Pin = GPIO_PIN_4;
        GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
       
        /* ADC1 interrupt Init */
        HAL_NVIC_SetPriority(ADC1_IRQn, 1, 0);
        HAL_NVIC_EnableIRQ(ADC1_IRQn);
}[/mw_shl_code]

这是我的单通道、单次转换的ADC初始化代码,然后在每1ms的systick中断里调用
HAL_ADC_Start_IT(&hadc);
来开始一次ADC转换,再在 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) 中断中调用
HAL_ADC_GetValue(&hadc);
来换取ADC值。
硬件上 VDDA 和 VDD 都是用的同一个3.3V电源。
我的结果是在 PA4 引脚上接上 0.5V 的电压时,读出来的ADC值在200~1000左右波动,不稳定。换其他电压值也是波动,接地就有比较稳定的0。请问是哪里的问题呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。