2025-03-30 8:51 AM - edited 2025-03-30 9:13 AM
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();
}