Skip to main content
RR.7
Associate II
March 31, 2021
Question

I am trying to read Vbat(battery voltage) using ADC in STM32F042 ,the reading always is Zero. Anyone please find the reason for it.The code is as follows..please dont metion the syntax error ..i have copied only the necessary parts

  • March 31, 2021
  • 0 replies
  • 551 views

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)

{

if(__HAL_ADC_GET_FLAG(hadc,ADC_FLAG_EOC)){

adc_value=HAL_ADC_GetValue(hadc);

}

}

main()

{

HAL_ADC_Start_IT(&hadc);

while(1)

{

}

}

static void MX_ADC_Init(void)

{

 ADC_ChannelConfTypeDef sConfig = {0};

 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_PRESERVED;

 if (HAL_ADC_Init(&hadc) != HAL_OK)

 {

  Error_Handler();

 }

 sConfig.Channel = ADC_CHANNEL_VBAT;

 sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;

 sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5;

 if (HAL_ADC_ConfigChannel(&hadc, &sConfig) != HAL_OK)

 {

  Error_Handler();

 }

}

This topic has been closed for replies.