Handle ADC interrupt request.
2233 uint32_t overrun_error = 0UL;
2234 uint32_t tmp_isr = hadc->Instance->ISR;
2235 uint32_t tmp_ier = hadc->Instance->IER;
2236 uint32_t tmp_adc_inj_is_trigger_source_sw_start;
2237 uint32_t tmp_adc_reg_is_trigger_source_sw_start;
2239 #if defined(ADC_MULTIMODE_SUPPORT) 2240 const ADC_TypeDef *tmpADC_Master;
2241 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
2246 assert_param(IS_ADC_EOC_SELECTION(hadc->Init.EOCSelection));
2249 if (((tmp_isr & ADC_FLAG_EOSMP) == ADC_FLAG_EOSMP) && ((tmp_ier & ADC_IT_EOSMP) == ADC_IT_EOSMP))
2252 if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL)
2255 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOSMP);
2259 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2260 hadc->EndOfSamplingCallback(hadc);
2266 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOSMP);
2270 if ((((tmp_isr & ADC_FLAG_EOC) == ADC_FLAG_EOC) && ((tmp_ier & ADC_IT_EOC) == ADC_IT_EOC)) ||
2271 (((tmp_isr & ADC_FLAG_EOS) == ADC_FLAG_EOS) && ((tmp_ier & ADC_IT_EOS) == ADC_IT_EOS)))
2274 if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL)
2277 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
2288 #if defined(ADC_MULTIMODE_SUPPORT) 2289 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
2290 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2291 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
2292 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
2296 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
2301 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
2302 tmp_cfgr = READ_REG(tmpADC_Master->CFGR);
2305 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
2309 if (READ_BIT(tmp_cfgr, ADC_CFGR_CONT) != ADC_CFGR_CONT)
2312 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOS))
2322 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC | ADC_IT_EOS);
2325 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
2327 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) == 0UL)
2329 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
2335 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
2338 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
2349 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2350 hadc->ConvCpltCallback(hadc);
2360 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS));
2364 if ((((tmp_isr & ADC_FLAG_JEOC) == ADC_FLAG_JEOC) && ((tmp_ier & ADC_IT_JEOC) == ADC_IT_JEOC)) ||
2365 (((tmp_isr & ADC_FLAG_JEOS) == ADC_FLAG_JEOS) && ((tmp_ier & ADC_IT_JEOS) == ADC_IT_JEOS)))
2368 if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL)
2371 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC);
2380 #if defined(ADC_MULTIMODE_SUPPORT) 2381 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
2382 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2383 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_SIMULT)
2384 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_INTERL)
2387 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
2391 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
2392 tmp_cfgr = READ_REG(tmpADC_Master->CFGR);
2395 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
2403 if ((tmp_adc_inj_is_trigger_source_sw_start != 0UL) ||
2404 ((READ_BIT(tmp_cfgr, ADC_CFGR_JAUTO) == 0UL) &&
2405 ((tmp_adc_reg_is_trigger_source_sw_start != 0UL) &&
2406 (READ_BIT(tmp_cfgr, ADC_CFGR_CONT) == 0UL))))
2409 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOS))
2417 if (READ_BIT(tmp_cfgr, ADC_CFGR_JQM) == 0UL)
2424 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC | ADC_IT_JEOS);
2427 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
2429 if ((hadc->State & HAL_ADC_STATE_REG_BUSY) == 0UL)
2431 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
2437 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
2440 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
2452 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2453 hadc->InjectedConvCpltCallback(hadc);
2459 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC | ADC_FLAG_JEOS);
2463 if (((tmp_isr & ADC_FLAG_AWD1) == ADC_FLAG_AWD1) && ((tmp_ier & ADC_IT_AWD1) == ADC_IT_AWD1))
2466 SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
2469 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2470 hadc->LevelOutOfWindowCallback(hadc);
2476 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD1);
2480 if (((tmp_isr & ADC_FLAG_AWD2) == ADC_FLAG_AWD2) && ((tmp_ier & ADC_IT_AWD2) == ADC_IT_AWD2))
2483 SET_BIT(hadc->State, HAL_ADC_STATE_AWD2);
2486 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2487 hadc->LevelOutOfWindow2Callback(hadc);
2493 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD2);
2497 if (((tmp_isr & ADC_FLAG_AWD3) == ADC_FLAG_AWD3) && ((tmp_ier & ADC_IT_AWD3) == ADC_IT_AWD3))
2500 SET_BIT(hadc->State, HAL_ADC_STATE_AWD3);
2503 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2504 hadc->LevelOutOfWindow3Callback(hadc);
2510 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD3);
2514 if (((tmp_isr & ADC_FLAG_OVR) == ADC_FLAG_OVR) && ((tmp_ier & ADC_IT_OVR) == ADC_IT_OVR))
2522 if (hadc->Init.Overrun == ADC_OVR_DATA_PRESERVED)
2524 overrun_error = 1UL;
2529 #if defined(ADC_MULTIMODE_SUPPORT) 2530 if (tmp_multimode_config != LL_ADC_MULTI_INDEPENDENT)
2536 overrun_error = 1UL;
2543 if ((hadc->Instance->CFGR & ADC_CFGR_DMAEN) != 0UL)
2545 overrun_error = 1UL;
2550 if (overrun_error == 1UL)
2553 SET_BIT(hadc->State, HAL_ADC_STATE_REG_OVR);
2556 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR);
2563 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2564 hadc->ErrorCallback(hadc);
2571 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
2575 if (((tmp_isr & ADC_FLAG_JQOVF) == ADC_FLAG_JQOVF) && ((tmp_ier & ADC_IT_JQOVF) == ADC_IT_JQOVF))
2578 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_JQOVF);
2581 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_JQOVF);
2584 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JQOVF);
2587 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 2588 hadc->InjectedQueueOverflowCallback(hadc);
__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group regular conversion trigger source internal (SW start) or external.
void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 2 callback in non-blocking mode.
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON)
Get ADC multimode configuration to operate in independent mode or multimode (for devices with several...
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
ADC error callback in non-blocking mode (ADC conversion with interruption or transfer by DMA)...
void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef *hadc)
Injected context queue overflow callback.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
Conversion complete callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx)
Get ADC group injected conversion state. CR JADSTART LL_ADC_INJ_IsConversionOngoing.
void HAL_ADCEx_EndOfSamplingCallback(ADC_HandleTypeDef *hadc)
End Of Sampling callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_GetMultiDMATransfer(ADC_Common_TypeDef *ADCxy_COMMON)
Get ADC multimode conversion data transfer: no transfer or transfer by DMA.
void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 3 callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group injected conversion trigger source internal (SW start) or external. ...
__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx)
Get ADC group regular conversion state. CR ADSTART LL_ADC_REG_IsConversionOngoing.
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
Analog watchdog 1 callback in non-blocking mode.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))