97 #ifdef HAL_ADC_MODULE_ENABLED
148 __IO uint32_t counter = 0U;
149 uint32_t tmp1 = 0U, tmp2 = 0U;
150 ADC_Common_TypeDef *tmpADC_Common;
159 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
162 __HAL_ADC_ENABLE(hadc);
166 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
167 while (counter != 0U)
174 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
179 ADC_STATE_CLR_SET(hadc->State,
180 HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC,
181 HAL_ADC_STATE_INJ_BUSY);
187 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY))
190 ADC_CLEAR_ERRORCODE(hadc);
200 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC);
205 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
208 if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI))
210 tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN);
211 tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO);
215 hadc->Instance->CR2 |= ADC_CR2_JSWSTART;
220 tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN);
221 tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO);
222 if ((hadc->Instance == ADC1) && tmp1 && tmp2)
225 hadc->Instance->CR2 |= ADC_CR2_JSWSTART;
232 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
235 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
251 __IO uint32_t counter = 0U;
252 uint32_t tmp1 = 0U, tmp2 = 0U;
253 ADC_Common_TypeDef *tmpADC_Common;
262 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
265 __HAL_ADC_ENABLE(hadc);
269 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
270 while (counter != 0U)
277 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
282 ADC_STATE_CLR_SET(hadc->State,
283 HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC,
284 HAL_ADC_STATE_INJ_BUSY);
290 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY))
293 ADC_CLEAR_ERRORCODE(hadc);
303 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC);
306 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC);
311 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
314 if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI))
316 tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN);
317 tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO);
321 hadc->Instance->CR2 |= ADC_CR2_JSWSTART;
326 tmp1 = HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_JEXTEN);
327 tmp2 = HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO);
328 if ((hadc->Instance == ADC1) && tmp1 && tmp2)
331 hadc->Instance->CR2 |= ADC_CR2_JSWSTART;
338 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
341 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
362 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
365 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
376 if (((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) &&
377 HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO))
381 __HAL_ADC_DISABLE(hadc);
384 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
387 ADC_STATE_CLR_SET(hadc->State,
388 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
389 HAL_ADC_STATE_READY);
395 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
397 tmp_hal_status = HAL_ERROR;
404 return tmp_hal_status;
416 uint32_t tickstart = 0U;
422 while (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC)))
425 if (Timeout != HAL_MAX_DELAY)
427 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
430 if (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOC)))
432 hadc->State = HAL_ADC_STATE_TIMEOUT;
442 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JSTRT | ADC_FLAG_JEOC);
445 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC);
453 if (ADC_IS_SOFTWARE_START_INJECTED(hadc) &&
454 (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) ||
455 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) &&
456 (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) &&
457 (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
458 (hadc->Init.ContinuousConvMode == DISABLE))))
461 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
463 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY))
465 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
487 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
490 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
501 if (((hadc->State & HAL_ADC_STATE_REG_BUSY) == RESET) &&
502 HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO))
506 __HAL_ADC_DISABLE(hadc);
509 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
512 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
515 ADC_STATE_CLR_SET(hadc->State,
516 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
517 HAL_ADC_STATE_READY);
523 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
525 tmp_hal_status = HAL_ERROR;
532 return tmp_hal_status;
549 __IO uint32_t tmp = 0U;
552 assert_param(IS_ADC_INJECTED_RANK(InjectedRank));
556 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC);
559 switch (InjectedRank)
561 case ADC_INJECTED_RANK_4:
563 tmp = hadc->Instance->JDR4;
566 case ADC_INJECTED_RANK_3:
568 tmp = hadc->Instance->JDR3;
571 case ADC_INJECTED_RANK_2:
573 tmp = hadc->Instance->JDR2;
576 case ADC_INJECTED_RANK_1:
578 tmp = hadc->Instance->JDR1;
600 __IO uint32_t counter = 0U;
601 ADC_Common_TypeDef *tmpADC_Common;
604 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
605 assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
606 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests));
613 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
616 __HAL_ADC_ENABLE(hadc);
620 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
621 while (counter != 0U)
628 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
633 ADC_STATE_CLR_SET(hadc->State,
634 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR,
635 HAL_ADC_STATE_REG_BUSY);
639 if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET)
641 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
645 if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
648 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
653 ADC_CLEAR_ERRORCODE(hadc);
662 hadc->DMA_Handle->XferCpltCallback = ADC_MultiModeDMAConvCplt;
665 hadc->DMA_Handle->XferHalfCpltCallback = ADC_MultiModeDMAHalfConvCplt;
668 hadc->DMA_Handle->XferErrorCallback = ADC_MultiModeDMAError ;
675 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC);
678 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR);
683 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
685 if (hadc->Init.DMAContinuousRequests != DISABLE)
688 tmpADC_Common->CCR |= ADC_CCR_DDS;
693 tmpADC_Common->CCR &= ~ADC_CCR_DDS;
697 HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&tmpADC_Common->CDR, (uint32_t)pData, Length);
700 if ((hadc->Instance->CR2 & ADC_CR2_EXTEN) == RESET)
703 hadc->Instance->CR2 |= (uint32_t)ADC_CR2_SWSTART;
709 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
712 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
727 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
728 ADC_Common_TypeDef *tmpADC_Common;
731 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
738 __HAL_ADC_DISABLE(hadc);
743 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
746 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
749 tmpADC_Common->CCR &= ~ADC_CCR_DDS;
756 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
759 ADC_STATE_CLR_SET(hadc->State,
760 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
761 HAL_ADC_STATE_READY);
768 return tmp_hal_status;
780 ADC_Common_TypeDef *tmpADC_Common;
788 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
791 return tmpADC_Common->CDR;
820 #ifdef USE_FULL_ASSERT
825 ADC_Common_TypeDef *tmpADC_Common;
829 assert_param(IS_ADC_INJECTED_RANK(sConfigInjected->
InjectedRank));
836 #ifdef USE_FULL_ASSERT
837 tmp = ADC_GET_RESOLUTION(hadc);
853 hadc->Instance->SMPR1 &= ~ADC_SMPR1(ADC_SMPR1_SMP10, sConfigInjected->
InjectedChannel);
861 hadc->Instance->SMPR2 &= ~ADC_SMPR2(ADC_SMPR2_SMP0, sConfigInjected->
InjectedChannel);
868 hadc->Instance->JSQR &= ~(ADC_JSQR_JL);
887 hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL);
891 hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN);
897 hadc->Instance->CR2 &= ~(ADC_CR2_JEXTSEL);
898 hadc->Instance->CR2 &= ~(ADC_CR2_JEXTEN);
904 hadc->Instance->CR1 |= ADC_CR1_JAUTO;
909 hadc->Instance->CR1 &= ~(ADC_CR1_JAUTO);
915 hadc->Instance->CR1 |= ADC_CR1_JDISCEN;
920 hadc->Instance->CR1 &= ~(ADC_CR1_JDISCEN);
927 hadc->Instance->JOFR1 &= ~(ADC_JOFR1_JOFFSET1);
932 hadc->Instance->JOFR2 &= ~(ADC_JOFR2_JOFFSET2);
937 hadc->Instance->JOFR3 &= ~(ADC_JOFR3_JOFFSET3);
942 hadc->Instance->JOFR4 &= ~(ADC_JOFR4_JOFFSET4);
950 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
953 if ((hadc->Instance == ADC1) && (sConfigInjected->
InjectedChannel == ADC_CHANNEL_VBAT))
956 tmpADC_Common->CCR |= ADC_CCR_VBATE;
960 if ((hadc->Instance == ADC1) && ((sConfigInjected->
InjectedChannel == ADC_CHANNEL_TEMPSENSOR) || (sConfigInjected->
InjectedChannel == ADC_CHANNEL_VREFINT)))
963 tmpADC_Common->CCR |= ADC_CCR_TSVREFE;
984 ADC_Common_TypeDef *tmpADC_Common;
987 assert_param(IS_ADC_MODE(multimode->
Mode));
988 assert_param(IS_ADC_DMA_ACCESS_MODE(multimode->
DMAAccessMode));
997 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
1000 tmpADC_Common->CCR &= ~(ADC_CCR_MULTI);
1001 tmpADC_Common->CCR |= multimode->
Mode;
1004 tmpADC_Common->CCR &= ~(ADC_CCR_DMA);
1008 tmpADC_Common->CCR &= ~(ADC_CCR_DELAY);
1034 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA))
1037 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
1045 if (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
1046 (hadc->Init.ContinuousConvMode == DISABLE) &&
1047 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) ||
1048 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)))
1054 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC);
1057 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1059 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
1061 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1071 hadc->DMA_Handle->XferErrorCallback(hdma);
1097 hadc->State = HAL_ADC_STATE_ERROR_DMA;
1099 hadc->ErrorCode |= HAL_ADC_ERROR_DMA;
HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_InjectionConfTypeDef *sConfigInjected)
Configures for the selected ADC injected channel its corresponding rank in the sequencer and its samp...
uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc)
Returns the last ADC1, ADC2 and ADC3 regular conversions results data in the selected multi mode.
HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Poll for injected conversion complete.
HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc)
Disables ADC DMA (multi-ADC mode) and disables ADC peripheral.
uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef *hadc, uint32_t InjectedRank)
Gets the converted value from data register of injected channel.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels. Disable ADC peripheral if no regular conversion is on going.
HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef *hadc)
Enables the selected ADC software start conversion of the injected channels.
HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enables ADC DMA request after last transfer (Multi-ADC mode) and enables ADC peripheral.
HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode)
Configures the ADC multi-mode.
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non blocking mode.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels, disable interruption of end-of-conversion. Disable ADC peripher...
HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef *hadc)
Enables the interrupt and starts ADC conversion of injected channels.
FunctionalState AutoInjectedConv
uint32_t InjectedSamplingTime
uint32_t ExternalTrigInjecConvEdge
uint32_t TwoSamplingDelay
FunctionalState InjectedDiscontinuousConvMode
uint32_t ExternalTrigInjecConv
uint32_t InjectedNbrOfConversion
ADC Configuration injected Channel structure definition.
ADC Configuration multi-mode structure definition.
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.
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
Error ADC callback.
struct __ADC_HandleTypeDef else typedef struct endif ADC_HandleTypeDef
ADC handle Structure definition.
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.
This file contains all the functions prototypes for the HAL module driver.
DMA handle Structure definition.