Initialize the ADC peripheral and regular group according to parameters specified in structure "ADC_InitTypeDef".
404 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
406 uint32_t tmp_adc_reg_is_conversion_on_going;
407 __IO uint32_t wait_loop_index = 0UL;
408 uint32_t tmp_adc_is_conversion_on_going_regular;
409 uint32_t tmp_adc_is_conversion_on_going_injected;
419 assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler));
421 #if defined(ADC_CFGR_DFSDMCFG) &&defined(DFSDM1_Channel0) 425 assert_param(IS_ADC_SCAN_MODE(hadc->Init.ScanConvMode));
426 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
427 assert_param(IS_ADC_EXTTRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
428 assert_param(IS_ADC_EXTTRIG(hadc, hadc->Init.ExternalTrigConv));
429 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests));
430 assert_param(IS_ADC_EOC_SELECTION(hadc->Init.EOCSelection));
432 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.LowPowerAutoWait));
433 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.OversamplingMode));
435 if (hadc->Init.ScanConvMode != ADC_SCAN_DISABLE)
437 assert_param(IS_ADC_REGULAR_NB_CONV(hadc->Init.NbrOfConversion));
438 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode));
440 if (hadc->Init.DiscontinuousConvMode == ENABLE)
442 assert_param(IS_ADC_REGULAR_DISCONT_NUMBER(hadc->Init.NbrOfDiscConversion));
447 assert_param(!((hadc->Init.DiscontinuousConvMode == ENABLE) && (hadc->Init.ContinuousConvMode == ENABLE)));
451 if (hadc->State == HAL_ADC_STATE_RESET)
453 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 465 if (hadc->MspInitCallback == NULL)
471 hadc->MspInitCallback(hadc);
478 ADC_CLEAR_ERRORCODE(hadc);
503 wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * (SystemCoreClock / (100000UL * 2UL)));
504 while (wait_loop_index != 0UL)
516 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
519 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
521 tmp_hal_status = HAL_ERROR;
530 if (((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) == 0UL)
531 && (tmp_adc_reg_is_conversion_on_going == 0UL)
535 ADC_STATE_CLR_SET(hadc->State,
536 HAL_ADC_STATE_REG_BUSY,
537 HAL_ADC_STATE_BUSY_INTERNAL);
546 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL)
578 tmpCFGR = (ADC_CFGR_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode) |
580 hadc->Init.DataAlign |
581 hadc->Init.Resolution |
582 ADC_CFGR_REG_DISCONTINUOUS((uint32_t)hadc->Init.DiscontinuousConvMode));
584 if (hadc->Init.DiscontinuousConvMode == ENABLE)
586 tmpCFGR |= ADC_CFGR_DISCONTINUOUS_NUM(hadc->Init.NbrOfDiscConversion);
594 if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START)
596 tmpCFGR |= ((hadc->Init.ExternalTrigConv & ADC_CFGR_EXTSEL)
597 | hadc->Init.ExternalTrigConvEdge
602 MODIFY_REG(hadc->Instance->CFGR, ADC_CFGR_FIELDS_1, tmpCFGR);
612 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
613 && (tmp_adc_is_conversion_on_going_injected == 0UL)
616 tmpCFGR = (ADC_CFGR_DFSDM(hadc) |
617 ADC_CFGR_AUTOWAIT((uint32_t)hadc->Init.LowPowerAutoWait) |
618 ADC_CFGR_DMACONTREQ((uint32_t)hadc->Init.DMAContinuousRequests));
620 MODIFY_REG(hadc->Instance->CFGR, ADC_CFGR_FIELDS_2, tmpCFGR);
622 if (hadc->Init.OversamplingMode == ENABLE)
624 assert_param(IS_ADC_OVERSAMPLING_RATIO(hadc->Init.Oversampling.Ratio));
625 assert_param(IS_ADC_RIGHT_BIT_SHIFT(hadc->Init.Oversampling.RightBitShift));
626 assert_param(IS_ADC_TRIGGERED_OVERSAMPLING_MODE(hadc->Init.Oversampling.TriggeredMode));
627 assert_param(IS_ADC_REGOVERSAMPLING_MODE(hadc->Init.Oversampling.OversamplingStopReset));
640 hadc->Init.Oversampling.Ratio |
641 hadc->Init.Oversampling.RightBitShift |
642 hadc->Init.Oversampling.TriggeredMode |
643 hadc->Init.Oversampling.OversamplingStopReset
649 CLEAR_BIT(hadc->Instance->CFGR2, ADC_CFGR2_ROVSE);
663 if (hadc->Init.ScanConvMode == ADC_SCAN_ENABLE)
666 MODIFY_REG(hadc->Instance->SQR1, ADC_SQR1_L, (hadc->Init.NbrOfConversion - (uint8_t)1));
670 CLEAR_BIT(hadc->Instance->SQR1, ADC_SQR1_L);
675 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL, HAL_ADC_STATE_READY);
680 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
682 tmp_hal_status = HAL_ERROR;
686 return tmp_hal_status;
__STATIC_INLINE void LL_ADC_DisableDeepPowerDown(ADC_TypeDef *ADCx)
Disable ADC deep power down mode.
__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance enable state.
void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 2 callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance internal voltage regulator state. CR ADVREGEN LL_ADC_IsInternalRegulat...
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non-blocking mode.
__STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx)
Enable ADC instance internal voltage regulator.
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
ADC error callback in non-blocking mode (ADC conversion with interruption or transfer by DMA)...
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
Initialize the ADC MSP.
void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef *hadc)
Injected context queue overflow callback.
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
__STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock)
Set parameter common to several ADC: Clock source and prescaler.
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.
void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 3 callback in non-blocking mode.
void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc)
Conversion DMA half-transfer callback in non-blocking mode.
__STATIC_INLINE uint32_t LL_ADC_IsDeepPowerDownEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance deep power down state. CR DEEPPWD LL_ADC_IsDeepPowerDownEnabled.
__STATIC_INLINE uint32_t LL_ADC_REG_IsConversionOngoing(ADC_TypeDef *ADCx)
Get ADC group regular conversion state. CR ADSTART LL_ADC_REG_IsConversionOngoing.
MODIFY_REG(hrtc->Instance->CR, RTC_CR_WUCKSEL,(uint32_t) WakeUpClock)
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
Analog watchdog 1 callback in non-blocking mode.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))