cancel
Showing results for 
Search instead for 
Did you mean: 

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

RR.7
Associate II

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();

 }

}

0 REPLIES 0