Skip to main content
Pedro Oliveira
Associate II
March 30, 2025
Question

ADC stop working after updating STM32CubeIDE to 1.18.0 version

  • March 30, 2025
  • 3 replies
  • 500 views

Hi everyone,

I am using an STM32H750 microcontroller and programming it through CubeIDE.

After updating STM32CubeIDE to the latest version (1.18.0), ADC3 stopped working. For some reason that I couldn't identify, the EOS bit in the ADC_ISR register is not being set after the conversion.

I have already downloaded the previous version (1.17.0), and the firmware still works on it.

P.S.: I am using ADC through BDMA.

Below is the function that stopped working and the ADC3 configuration:

 

void adc_sample(void){

LL_ADC_REG_StartConversion(hadc1.Instance);

LL_ADC_REG_StartConversion(hadc3.Instance);

 

while(!(LL_ADC_IsActiveFlag_EOS(hadc1.Instance)));

while(!(LL_ADC_IsActiveFlag_EOS(hadc3.Instance)));

 

LL_ADC_ClearFlag_EOS(hadc1.Instance);

LL_ADC_ClearFlag_EOS(hadc3.Instance);

}

 

/** Common config

*/

hadc3.Instance = ADC3;

hadc3.Init.Resolution = ADC_RESOLUTION_12B;

hadc3.Init.ScanConvMode = ADC_SCAN_ENABLE;

hadc3.Init.EOCSelection = ADC_EOC_SINGLE_CONV;

hadc3.Init.LowPowerAutoWait = DISABLE;

hadc3.Init.ContinuousConvMode = DISABLE;

hadc3.Init.NbrOfConversion = 4;

hadc3.Init.DiscontinuousConvMode = DISABLE;

hadc3.Init.ExternalTrigConv = ADC_SOFTWARE_START;

hadc3.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;

hadc3.Init.ConversionDataManagement = ADC_CONVERSIONDATA_DMA_CIRCULAR;

hadc3.Init.Overrun = ADC_OVR_DATA_PRESERVED;

hadc3.Init.LeftBitShift = ADC_LEFTBITSHIFT_NONE;

hadc3.Init.OversamplingMode = DISABLE;

hadc3.Init.Oversampling.Ratio = 1;

if (HAL_ADC_Init(&hadc3) != HAL_OK)

{

Error_Handler();

}

3 replies

KDJEM.1
Technical Moderator
April 21, 2025

Hello @Pedro Oliveira;

 

First of all, I apologize for my late reply.

I noted that clock prescaler initialization for ADC3 is not generated.

hadc3.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1

 For that could you please add this function under static void MX_ADC3_Init(void) and let me know if the issue is solved or not?

 

The missing ClockPrescaler issue is reported internally.

Internal ticket number: 208196 (This is an internal tracking number and is not accessible or usable by customers)

 

Thank you.

Kaouthar

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
KDJEM.1
Technical Moderator
July 9, 2025

Hello @Pedro Oliveira;

 

The prsecaler initialization issue is fixed in STM32CubeMX6.15.0 version and STM32CubeIDE 1.19.0 version.

Could you please update your toolchains and let me know if the issue is solved or not?

 

Thank you.

Kaouthar

To give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.
Pedro Oliveira
Associate II
July 10, 2025

Hello @Kaouthar,

Thank you for the follow-up.

I updated to STM32CubeIDE 1.19.0 as suggested. However, the issue was not resolved — the EOS bit in the ADC_ISR register was still not being set after the conversion.

I was able to fix the issue by changing the ADC3 configuration from BDMA to DMA1.

 

Bellow is part of the code for your reference: 

File:MAIN.C

__attribute__ ((section(".bufferDMA1"), used)) MED4_ADC ADC_DC;

 

File:STM32H750VBTX_FLASH.ld

/* ***********MODIFICATION STARTS HERE************** */

.bufferBDMA(NOLOAD):

{

. = ALIGN (1);

} > RAM_D3

 

.bufferDMA1(NOLOAD):

{

. = ALIGN (1);

} > RAM_D2

/* ***********MODIFICATION ENDS HERE**************** */