259#ifdef HAL_ADC_MODULE_ENABLED
341#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
348 if (hadc->MspInitCallback == NULL)
354 hadc->MspInitCallback(hadc);
396 return tmp_hal_status;
429#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
430 if (hadc->MspDeInitCallback == NULL)
436 hadc->MspDeInitCallback(hadc);
453 return tmp_hal_status;
456#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
478 if (pCallback == NULL)
481 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
490 case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
491 hadc->ConvCpltCallback = pCallback;
494 case HAL_ADC_CONVERSION_HALF_CB_ID :
495 hadc->ConvHalfCpltCallback = pCallback;
498 case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
499 hadc->LevelOutOfWindowCallback = pCallback;
502 case HAL_ADC_ERROR_CB_ID :
503 hadc->ErrorCallback = pCallback;
506 case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
507 hadc->InjectedConvCpltCallback = pCallback;
510 case HAL_ADC_MSPINIT_CB_ID :
511 hadc->MspInitCallback = pCallback;
514 case HAL_ADC_MSPDEINIT_CB_ID :
515 hadc->MspDeInitCallback = pCallback;
520 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
531 case HAL_ADC_MSPINIT_CB_ID :
532 hadc->MspInitCallback = pCallback;
535 case HAL_ADC_MSPDEINIT_CB_ID :
536 hadc->MspDeInitCallback = pCallback;
541 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
551 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
584 case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
588 case HAL_ADC_CONVERSION_HALF_CB_ID :
592 case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
596 case HAL_ADC_ERROR_CB_ID :
600 case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
604 case HAL_ADC_MSPINIT_CB_ID :
608 case HAL_ADC_MSPDEINIT_CB_ID :
614 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
625 case HAL_ADC_MSPINIT_CB_ID :
629 case HAL_ADC_MSPDEINIT_CB_ID :
635 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
645 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
718 __IO uint32_t counter = 0U;
719 ADC_Common_TypeDef *tmpADC_Common;
731 if ((hadc->
Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
739 while (counter != 0U)
757 if (READ_BIT(hadc->
Instance->CR1, ADC_CR1_JAUTO) != RESET)
791#if defined(ADC2) && defined(ADC3)
792 if ((hadc->
Instance == ADC1) || ((hadc->
Instance == ADC2) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_0)) \
793 || ((hadc->
Instance == ADC3) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_4)))
797 if ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET)
800 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
802#if defined(ADC2) && defined(ADC3)
809 if ((hadc->
Instance == ADC1) && ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET))
812 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
884 uint32_t tickstart = 0U;
913 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
973 uint32_t tickstart = 0U;
988 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
1039 __IO uint32_t counter = 0U;
1040 ADC_Common_TypeDef *tmpADC_Common;
1052 if ((hadc->
Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
1060 while (counter != 0U)
1078 if (READ_BIT(hadc->
Instance->CR1, ADC_CR1_JAUTO) != RESET)
1115#if defined(ADC2) && defined(ADC3)
1116 if ((hadc->
Instance == ADC1) || ((hadc->
Instance == ADC2) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_0)) \
1117 || ((hadc->
Instance == ADC3) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_4)))
1121 if ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET)
1124 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
1126#if defined(ADC2) && defined(ADC3)
1133 if ((hadc->
Instance == ADC1) && ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET))
1136 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
1201 uint32_t tmp1 = 0U, tmp2 = 0U;
1203 uint32_t tmp_sr = hadc->
Instance->SR;
1204 uint32_t tmp_cr1 = hadc->
Instance->CR1;
1250#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1251 hadc->ConvCpltCallback(hadc);
1297#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1298 hadc->InjectedConvCpltCallback(hadc);
1318#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1319 hadc->LevelOutOfWindowCallback(hadc);
1345#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1346 hadc->ErrorCallback(hadc);
1366 __IO uint32_t counter = 0U;
1367 ADC_Common_TypeDef *tmpADC_Common;
1379 if ((hadc->
Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
1387 while (counter != 0U)
1395 if ((hadc->
Instance->CR2 & ADC_CR2_DMA) == ADC_CR2_DMA)
1397 CLEAR_BIT(hadc->
Instance->CR2, ADC_CR2_DMA);
1412 if (READ_BIT(hadc->
Instance->CR1, ADC_CR1_JAUTO) != RESET)
1460 hadc->
Instance->CR2 |= ADC_CR2_DMA;
1468#if defined(ADC2) && defined(ADC3)
1469 if ((hadc->
Instance == ADC1) || ((hadc->
Instance == ADC2) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_0)) \
1470 || ((hadc->
Instance == ADC3) && ((ADC->CCR & ADC_CCR_MULTI_Msk) < ADC_CCR_MULTI_4)))
1474 if ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET)
1477 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
1479#if defined(ADC2) && defined(ADC3)
1486 if ((hadc->
Instance == ADC1) && ((hadc->
Instance->CR2 & ADC_CR2_EXTEN) == RESET))
1489 hadc->
Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
1530 hadc->
Instance->CR2 &= ~ADC_CR2_DMA;
1539 if (tmp_hal_status !=
HAL_OK)
1559 return tmp_hal_status;
1671 __IO uint32_t counter = 0U;
1672 ADC_Common_TypeDef *tmpADC_Common;
1686 hadc->
Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfig->
Channel);
1694 hadc->
Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfig->
Channel);
1701 if (sConfig->
Rank < 7U)
1704 hadc->
Instance->SQR3 &= ~ADC_SQR3_RK(ADC_SQR3_SQ1, sConfig->
Rank);
1710 else if (sConfig->
Rank < 13U)
1713 hadc->
Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->
Rank);
1722 hadc->
Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->
Rank);
1739 tmpADC_Common->CCR &= ~ADC_CCR_TSVREFE;
1742 tmpADC_Common->CCR |= ADC_CCR_VBATE;
1752 tmpADC_Common->CCR &= ~ADC_CCR_VBATE;
1755 tmpADC_Common->CCR |= ADC_CCR_TSVREFE;
1762 while (counter != 0U)
1794#ifdef USE_FULL_ASSERT
1803#ifdef USE_FULL_ASSERT
1812 if (AnalogWDGConfig->
ITMode == ENABLE)
1824 hadc->
Instance->CR1 &= ~(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN | ADC_CR1_AWDEN);
1836 hadc->
Instance->CR1 &= ~ADC_CR1_AWDCH;
1839 hadc->
Instance->CR1 |= (uint32_t)((uint16_t)(AnalogWDGConfig->
Channel));
1908 ADC_Common_TypeDef *tmpADC_Common;
1917 tmpADC_Common->CCR &= ~(ADC_CCR_ADCPRE);
1921 hadc->
Instance->CR1 &= ~(ADC_CR1_SCAN);
1925 hadc->
Instance->CR1 &= ~(ADC_CR1_RES);
1929 hadc->
Instance->CR2 &= ~(ADC_CR2_ALIGN);
1940 hadc->
Instance->CR2 &= ~(ADC_CR2_EXTSEL);
1944 hadc->
Instance->CR2 &= ~(ADC_CR2_EXTEN);
1950 hadc->
Instance->CR2 &= ~(ADC_CR2_EXTSEL);
1951 hadc->
Instance->CR2 &= ~(ADC_CR2_EXTEN);
1955 hadc->
Instance->CR2 &= ~(ADC_CR2_CONT);
1963 hadc->
Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN;
1966 hadc->
Instance->CR1 &= ~(ADC_CR1_DISCNUM);
1972 hadc->
Instance->CR1 &= ~(ADC_CR1_DISCEN);
1976 hadc->
Instance->SQR1 &= ~(ADC_SQR1_L);
1980 hadc->
Instance->CR2 &= ~(ADC_CR2_DDS);
1984 hadc->
Instance->CR2 &= ~(ADC_CR2_EOCS);
2032#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2033 hadc->ConvCpltCallback(hadc);
2043#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2044 hadc->ErrorCallback(hadc);
2067#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2068 hadc->ConvHalfCpltCallback(hadc);
2087#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2088 hadc->ErrorCallback(hadc);
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non blocking mode.
#define IS_ADC_CHANNEL(CHANNEL)
#define ADC_COMMON_REGISTER(__HANDLE__)
Defines if the selected ADC is within ADC common register ADC123 or ADC1 if available (ADC2,...
#define ADC_CHANNEL_TEMPSENSOR
#define HAL_ADC_ERROR_OVR
#define HAL_ADC_ERROR_INTERNAL
#define HAL_ADC_ERROR_DMA
HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)
Deinitializes the ADCx peripheral registers to their default reset values.
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc)
Initializes the ADCx peripheral according to the specified parameters in the ADC_InitStruct and initi...
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
Initializes the ADC MSP.
void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
DeInitializes the ADC MSP.
HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef *hadc, uint32_t EventType, uint32_t Timeout)
Poll for conversion event.
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
Enables ADC and starts conversion of the regular channels.
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc)
Disables ADC and stop conversion of regular channels.
void HAL_ADC_IRQHandler(ADC_HandleTypeDef *hadc)
Handles ADC interrupt request.
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)
Gets the converted value from data register of regular channel.
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
Analog watchdog callback in non blocking mode.
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enables ADC DMA request after last transfer (Single-ADC mode) and enables ADC peripheral.
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
Regular conversion complete callback in non blocking mode.
void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc)
Regular conversion half DMA transfer callback in non blocking mode.
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Poll for regular conversion complete.
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
Error ADC callback.
HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef *hadc)
Disables ADC DMA (Single-ADC mode) and disables ADC peripheral.
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef *hadc)
Disables the interrupt and stop ADC conversion of regular channels.
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc)
Enables the interrupt and starts ADC conversion of regular channels.
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)
Configures for the selected ADC regular channel its corresponding rank in the sequencer and its sampl...
HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef *hadc, ADC_AnalogWDGConfTypeDef *AnalogWDGConfig)
Configures the analog watchdog.
uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc)
Return the ADC error code.
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef *hadc)
return the ADC state
#define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable the ADC end of conversion interrupt.
#define __HAL_ADC_DISABLE(__HANDLE__)
Disable the ADC peripheral.
#define __HAL_ADC_ENABLE(__HANDLE__)
Enable the ADC peripheral.
#define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable the ADC end of conversion interrupt.
#define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the ADC's pending flags.
#define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__)
Get the selected ADC's flag status.
#define HAL_ADC_STATE_INJ_BUSY
#define HAL_ADC_STATE_REG_OVR
#define HAL_ADC_STATE_ERROR_CONFIG
#define HAL_ADC_STATE_AWD1
#define HAL_ADC_STATE_RESET
HAL ADC state machine: ADC states definition (bitfields)
#define HAL_ADC_STATE_REG_BUSY
#define HAL_ADC_STATE_ERROR_DMA
#define HAL_ADC_STATE_ERROR_INTERNAL
#define HAL_ADC_STATE_BUSY_INTERNAL
#define HAL_ADC_STATE_TIMEOUT
#define HAL_ADC_STATE_READY
#define HAL_ADC_STATE_REG_EOC
#define HAL_ADC_STATE_INJ_EOC
#define ADC_SOFTWARE_START
#define ADC_TEMPSENSOR_DELAY_US
#define ADC_STAB_DELAY_US
static void ADC_DMAError(DMA_HandleTypeDef *hdma)
DMA error callback.
static void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
static void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
static void ADC_Init(ADC_HandleTypeDef *hadc)
Initializes the ADCx peripheral according to the specified parameters in the ADC_InitStruct without i...
#define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_)
Set the selected regular channel rank for rank between 1 and 6.
#define ADC_SQR1(_NbrOfConversion_)
Set ADC Regular channel sequence length.
#define IS_ADC_REGULAR_LENGTH(LENGTH)
#define IS_ADC_EOCSelection(EOCSelection)
#define IS_ADC_EVENT_TYPE(EVENT)
#define IS_ADC_DATA_ALIGN(ALIGN)
#define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_)
Set the ADC's sample time for channel numbers between 10 and 18.
#define ADC_IS_SOFTWARE_START_REGULAR(__HANDLE__)
Test if conversion trigger of regular group is software start or external trigger.
#define IS_ADC_SAMPLE_TIME(TIME)
#define IS_ADC_RESOLUTION(RESOLUTION)
#define IS_ADC_CLOCKPRESCALER(ADC_CLOCK)
#define IS_ADC_ANALOG_WATCHDOG(WATCHDOG)
#define IS_ADC_REGULAR_RANK(RANK)
#define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_)
Configures the number of discontinuous conversions for the regular group channels.
#define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_)
Set the selected regular channel rank for rank between 13 and 16.
#define ADC_CR2_DMAContReq(_DMAContReq_MODE_)
Enable the ADC DMA continuous request.
#define ADC_IS_SOFTWARE_START_INJECTED(__HANDLE__)
Test if conversion trigger of injected group is software start or external trigger.
#define ADC_CR2_EOCSelection(_EOCSelection_MODE_)
Enable the ADC end of conversion selection.
#define ADC_STATE_CLR_SET
Simultaneously clears and sets specific bits of the handle State.
#define IS_ADC_REGULAR_DISC_NUMBER(NUMBER)
#define IS_ADC_EXT_TRIG(REGTRIG)
#define ADC_CLEAR_ERRORCODE(__HANDLE__)
Clear ADC error code (set it to error code: "no error")
#define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_)
Set the selected regular channel rank for rank between 7 and 12.
#define ADC_CR1_SCANCONV(_SCANCONV_MODE_)
Enable ADC scan mode.
#define IS_ADC_EXT_TRIG_EDGE(EDGE)
#define IS_ADC_RANGE(RESOLUTION, ADC_VALUE)
#define ADC_GET_RESOLUTION(__HANDLE__)
Return resolution bits in CR1 register.
#define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_)
Enable ADC continuous conversion mode.
#define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_)
Set the ADC's sample time for channel numbers between 0 and 9.
#define ADC_CHANNEL_VREFINT
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Aborts the DMA Transfer.
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
Start the DMA Transfer with interrupt enabled.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define assert_param(expr)
This file contains all the functions prototypes for the HAL module driver.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition
#define __HAL_UNLOCK(__HANDLE__)
#define HAL_IS_BIT_CLR(REG, BIT)
#define __HAL_LOCK(__HANDLE__)
ADC Configuration multi-mode structure definition.
Structure definition of ADC channel for regular group.
ADC handle Structure definition.
DMA_HandleTypeDef * DMA_Handle
FunctionalState ContinuousConvMode
FunctionalState DMAContinuousRequests
uint32_t ExternalTrigConv
uint32_t NbrOfDiscConversion
uint32_t ExternalTrigConvEdge
FunctionalState DiscontinuousConvMode
DMA handle Structure definition.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
__IO HAL_DMA_StateTypeDef State
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)