259 #ifdef HAL_ADC_MODULE_ENABLED
313 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
322 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
323 assert_param(IS_ADC_CLOCKPRESCALER(hadc->Init.ClockPrescaler));
324 assert_param(IS_ADC_RESOLUTION(hadc->Init.Resolution));
325 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ScanConvMode));
326 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
327 assert_param(IS_ADC_EXT_TRIG(hadc->Init.ExternalTrigConv));
328 assert_param(IS_ADC_DATA_ALIGN(hadc->Init.DataAlign));
329 assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion));
330 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests));
331 assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection));
332 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DiscontinuousConvMode));
334 if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START)
336 assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
339 if (hadc->State == HAL_ADC_STATE_RESET)
341 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
348 if (hadc->MspInitCallback == NULL)
354 hadc->MspInitCallback(hadc);
361 ADC_CLEAR_ERRORCODE(hadc);
364 hadc->Lock = HAL_UNLOCKED;
369 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL))
372 ADC_STATE_CLR_SET(hadc->State,
373 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
374 HAL_ADC_STATE_BUSY_INTERNAL);
380 ADC_CLEAR_ERRORCODE(hadc);
383 ADC_STATE_CLR_SET(hadc->State,
384 HAL_ADC_STATE_BUSY_INTERNAL,
385 HAL_ADC_STATE_READY);
389 tmp_hal_status = HAL_ERROR;
396 return tmp_hal_status;
407 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
416 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
419 SET_BIT(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL);
423 __HAL_ADC_DISABLE(hadc);
427 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
429 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
430 if (hadc->MspDeInitCallback == NULL)
436 hadc->MspDeInitCallback(hadc);
443 ADC_CLEAR_ERRORCODE(hadc);
446 hadc->State = HAL_ADC_STATE_RESET;
453 return tmp_hal_status;
456 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
476 HAL_StatusTypeDef status = HAL_OK;
478 if (pCallback == NULL)
481 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
486 if ((hadc->State & HAL_ADC_STATE_READY) != 0UL)
491 hadc->ConvCpltCallback = pCallback;
495 hadc->ConvHalfCpltCallback = pCallback;
499 hadc->LevelOutOfWindowCallback = pCallback;
503 hadc->ErrorCallback = pCallback;
507 hadc->InjectedConvCpltCallback = pCallback;
511 hadc->MspInitCallback = pCallback;
515 hadc->MspDeInitCallback = pCallback;
520 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
527 else if (HAL_ADC_STATE_RESET == hadc->State)
532 hadc->MspInitCallback = pCallback;
536 hadc->MspDeInitCallback = pCallback;
541 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
551 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
578 HAL_StatusTypeDef status = HAL_OK;
580 if ((hadc->State & HAL_ADC_STATE_READY) != 0UL)
614 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
621 else if (HAL_ADC_STATE_RESET == hadc->State)
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;
722 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
723 assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
731 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
734 __HAL_ADC_ENABLE(hadc);
738 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
739 while (counter != 0U)
746 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
751 ADC_STATE_CLR_SET(hadc->State,
752 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR,
753 HAL_ADC_STATE_REG_BUSY);
757 if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET)
759 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
763 if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
766 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
771 ADC_CLEAR_ERRORCODE(hadc);
782 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
786 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR);
789 if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI))
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;
819 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
822 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
842 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
849 __HAL_ADC_DISABLE(hadc);
852 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
855 ADC_STATE_CLR_SET(hadc->State,
856 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
857 HAL_ADC_STATE_READY);
884 uint32_t tickstart = 0U;
892 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_EOCS) &&
893 HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_DMA))
896 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
908 while (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC)))
911 if (Timeout != HAL_MAX_DELAY)
913 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
916 if (!(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOC)))
919 SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
931 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
934 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
942 if (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
943 (hadc->Init.ContinuousConvMode == DISABLE) &&
944 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) ||
945 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)))
948 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
950 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
952 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
973 uint32_t tickstart = 0U;
976 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
977 assert_param(IS_ADC_EVENT_TYPE(EventType));
983 while (!(__HAL_ADC_GET_FLAG(hadc, EventType)))
986 if (Timeout != HAL_MAX_DELAY)
988 if ((Timeout == 0U) || ((
HAL_GetTick() - tickstart) > Timeout))
991 if (!(__HAL_ADC_GET_FLAG(hadc, EventType)))
994 SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
1006 if (EventType == ADC_AWD_EVENT)
1009 SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
1012 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD);
1018 SET_BIT(hadc->State, HAL_ADC_STATE_REG_OVR);
1020 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR);
1023 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
1039 __IO uint32_t counter = 0U;
1040 ADC_Common_TypeDef *tmpADC_Common;
1043 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
1044 assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
1052 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
1055 __HAL_ADC_ENABLE(hadc);
1059 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
1060 while (counter != 0U)
1067 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
1072 ADC_STATE_CLR_SET(hadc->State,
1073 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR,
1074 HAL_ADC_STATE_REG_BUSY);
1078 if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET)
1080 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1084 if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
1087 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
1092 ADC_CLEAR_ERRORCODE(hadc);
1103 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
1107 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR);
1110 __HAL_ADC_ENABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR));
1113 if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI))
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;
1143 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1146 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
1165 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
1172 __HAL_ADC_DISABLE(hadc);
1175 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
1178 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_OVR));
1181 ADC_STATE_CLR_SET(hadc->State,
1182 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
1183 HAL_ADC_STATE_READY);
1201 uint32_t tmp1 = 0U, tmp2 = 0U;
1203 uint32_t tmp_sr = hadc->Instance->SR;
1204 uint32_t tmp_cr1 = hadc->Instance->CR1;
1207 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
1208 assert_param(IS_ADC_REGULAR_LENGTH(hadc->Init.NbrOfConversion));
1209 assert_param(IS_ADC_EOCSelection(hadc->Init.EOCSelection));
1211 tmp1 = tmp_sr & ADC_FLAG_EOC;
1212 tmp2 = tmp_cr1 & ADC_IT_EOC;
1217 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL))
1220 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
1229 if (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
1230 (hadc->Init.ContinuousConvMode == DISABLE) &&
1231 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) ||
1232 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)))
1238 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC);
1241 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1243 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
1245 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1250 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1251 hadc->ConvCpltCallback(hadc);
1257 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_STRT | ADC_FLAG_EOC);
1260 tmp1 = tmp_sr & ADC_FLAG_JEOC;
1261 tmp2 = tmp_cr1 & ADC_IT_JEOC;
1266 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL))
1269 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC);
1276 if (ADC_IS_SOFTWARE_START_INJECTED(hadc) &&
1277 (HAL_IS_BIT_CLR(hadc->Instance->JSQR, ADC_JSQR_JL) ||
1278 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)) &&
1279 (HAL_IS_BIT_CLR(hadc->Instance->CR1, ADC_CR1_JAUTO) &&
1280 (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
1281 (hadc->Init.ContinuousConvMode == DISABLE))))
1284 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
1287 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
1289 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_REG_BUSY))
1291 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1297 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1298 hadc->InjectedConvCpltCallback(hadc);
1304 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JSTRT | ADC_FLAG_JEOC));
1307 tmp1 = tmp_sr & ADC_FLAG_AWD;
1308 tmp2 = tmp_cr1 & ADC_IT_AWD;
1312 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_AWD))
1315 SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
1318 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1319 hadc->LevelOutOfWindowCallback(hadc);
1325 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD);
1329 tmp1 = tmp_sr & ADC_FLAG_OVR;
1330 tmp2 = tmp_cr1 & ADC_IT_OVR;
1339 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR);
1342 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
1345 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1346 hadc->ErrorCallback(hadc);
1352 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
1366 __IO uint32_t counter = 0U;
1367 ADC_Common_TypeDef *tmpADC_Common;
1370 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
1371 assert_param(IS_ADC_EXT_TRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
1379 if ((hadc->Instance->CR2 & ADC_CR2_ADON) != ADC_CR2_ADON)
1382 __HAL_ADC_ENABLE(hadc);
1386 counter = (ADC_STAB_DELAY_US * (SystemCoreClock / 1000000U));
1387 while (counter != 0U)
1395 if ((hadc->Instance->CR2 & ADC_CR2_DMA) == ADC_CR2_DMA)
1397 CLEAR_BIT(hadc->Instance->CR2, ADC_CR2_DMA);
1401 if (HAL_IS_BIT_SET(hadc->Instance->CR2, ADC_CR2_ADON))
1406 ADC_STATE_CLR_SET(hadc->State,
1407 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR,
1408 HAL_ADC_STATE_REG_BUSY);
1412 if (READ_BIT(hadc->Instance->CR1, ADC_CR1_JAUTO) != RESET)
1414 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1418 if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
1421 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
1426 ADC_CLEAR_ERRORCODE(hadc);
1437 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
1440 hadc->DMA_Handle->XferCpltCallback = ADC_DMAConvCplt;
1443 hadc->DMA_Handle->XferHalfCpltCallback = ADC_DMAHalfConvCplt;
1446 hadc->DMA_Handle->XferErrorCallback = ADC_DMAError;
1454 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOC | ADC_FLAG_OVR);
1457 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR);
1460 hadc->Instance->CR2 |= ADC_CR2_DMA;
1463 HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&hadc->Instance->DR, (uint32_t)pData, Length);
1466 if (HAL_IS_BIT_CLR(tmpADC_Common->CCR, ADC_CCR_MULTI))
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;
1496 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1499 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
1514 HAL_StatusTypeDef tmp_hal_status = HAL_OK;
1517 assert_param(IS_ADC_ALL_INSTANCE(hadc->Instance));
1524 __HAL_ADC_DISABLE(hadc);
1527 if (HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_ADON))
1530 hadc->Instance->CR2 &= ~ADC_CR2_DMA;
1539 if (tmp_hal_status != HAL_OK)
1542 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
1547 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
1550 ADC_STATE_CLR_SET(hadc->State,
1551 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
1552 HAL_ADC_STATE_READY);
1559 return tmp_hal_status;
1571 return hadc->Instance->DR;
1671 __IO uint32_t counter = 0U;
1672 ADC_Common_TypeDef *tmpADC_Common;
1675 assert_param(IS_ADC_CHANNEL(sConfig->
Channel));
1676 assert_param(IS_ADC_REGULAR_RANK(sConfig->
Rank));
1677 assert_param(IS_ADC_SAMPLE_TIME(sConfig->
SamplingTime));
1683 if (sConfig->
Channel > ADC_CHANNEL_9)
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);
1707 hadc->Instance->SQR3 |= ADC_SQR3_RK(sConfig->
Channel, sConfig->
Rank);
1710 else if (sConfig->
Rank < 13U)
1713 hadc->Instance->SQR2 &= ~ADC_SQR2_RK(ADC_SQR2_SQ7, sConfig->
Rank);
1716 hadc->Instance->SQR2 |= ADC_SQR2_RK(sConfig->
Channel, sConfig->
Rank);
1722 hadc->Instance->SQR1 &= ~ADC_SQR1_RK(ADC_SQR1_SQ13, sConfig->
Rank);
1725 hadc->Instance->SQR1 |= ADC_SQR1_RK(sConfig->
Channel, sConfig->
Rank);
1731 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
1734 if ((hadc->Instance == ADC1) && (sConfig->
Channel == ADC_CHANNEL_VBAT))
1737 if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT)
1739 tmpADC_Common->CCR &= ~ADC_CCR_TSVREFE;
1742 tmpADC_Common->CCR |= ADC_CCR_VBATE;
1747 if ((hadc->Instance == ADC1) && ((sConfig->
Channel == ADC_CHANNEL_TEMPSENSOR) || (sConfig->
Channel == ADC_CHANNEL_VREFINT)))
1750 if ((uint16_t)ADC_CHANNEL_TEMPSENSOR == (uint16_t)ADC_CHANNEL_VBAT)
1752 tmpADC_Common->CCR &= ~ADC_CCR_VBATE;
1755 tmpADC_Common->CCR |= ADC_CCR_TSVREFE;
1757 if (sConfig->
Channel == ADC_CHANNEL_TEMPSENSOR)
1761 counter = (ADC_TEMPSENSOR_DELAY_US * (SystemCoreClock / 1000000U));
1762 while (counter != 0U)
1794 #ifdef USE_FULL_ASSERT
1799 assert_param(IS_ADC_ANALOG_WATCHDOG(AnalogWDGConfig->
WatchdogMode));
1800 assert_param(IS_ADC_CHANNEL(AnalogWDGConfig->
Channel));
1801 assert_param(IS_FUNCTIONAL_STATE(AnalogWDGConfig->
ITMode));
1803 #ifdef USE_FULL_ASSERT
1804 tmp = ADC_GET_RESOLUTION(hadc);
1805 assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->
HighThreshold));
1806 assert_param(IS_ADC_RANGE(tmp, AnalogWDGConfig->
LowThreshold));
1812 if (AnalogWDGConfig->
ITMode == ENABLE)
1815 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_AWD);
1820 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_AWD);
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));
1888 return hadc->ErrorCode;
1908 ADC_Common_TypeDef *tmpADC_Common;
1914 tmpADC_Common = ADC_COMMON_REGISTER(hadc);
1917 tmpADC_Common->CCR &= ~(ADC_CCR_ADCPRE);
1918 tmpADC_Common->CCR |= hadc->Init.ClockPrescaler;
1921 hadc->Instance->CR1 &= ~(ADC_CR1_SCAN);
1922 hadc->Instance->CR1 |= ADC_CR1_SCANCONV(hadc->Init.ScanConvMode);
1925 hadc->Instance->CR1 &= ~(ADC_CR1_RES);
1926 hadc->Instance->CR1 |= hadc->Init.Resolution;
1929 hadc->Instance->CR2 &= ~(ADC_CR2_ALIGN);
1930 hadc->Instance->CR2 |= hadc->Init.DataAlign;
1937 if (hadc->Init.ExternalTrigConv != ADC_SOFTWARE_START)
1940 hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL);
1941 hadc->Instance->CR2 |= hadc->Init.ExternalTrigConv;
1944 hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN);
1945 hadc->Instance->CR2 |= hadc->Init.ExternalTrigConvEdge;
1950 hadc->Instance->CR2 &= ~(ADC_CR2_EXTSEL);
1951 hadc->Instance->CR2 &= ~(ADC_CR2_EXTEN);
1955 hadc->Instance->CR2 &= ~(ADC_CR2_CONT);
1956 hadc->Instance->CR2 |= ADC_CR2_CONTINUOUS((uint32_t)hadc->Init.ContinuousConvMode);
1958 if (hadc->Init.DiscontinuousConvMode != DISABLE)
1960 assert_param(IS_ADC_REGULAR_DISC_NUMBER(hadc->Init.NbrOfDiscConversion));
1963 hadc->Instance->CR1 |= (uint32_t)ADC_CR1_DISCEN;
1966 hadc->Instance->CR1 &= ~(ADC_CR1_DISCNUM);
1967 hadc->Instance->CR1 |= ADC_CR1_DISCONTINUOUS(hadc->Init.NbrOfDiscConversion);
1972 hadc->Instance->CR1 &= ~(ADC_CR1_DISCEN);
1976 hadc->Instance->SQR1 &= ~(ADC_SQR1_L);
1977 hadc->Instance->SQR1 |= ADC_SQR1(hadc->Init.NbrOfConversion);
1980 hadc->Instance->CR2 &= ~(ADC_CR2_DDS);
1981 hadc->Instance->CR2 |= ADC_CR2_DMAContReq((uint32_t)hadc->Init.DMAContinuousRequests);
1984 hadc->Instance->CR2 &= ~(ADC_CR2_EOCS);
1985 hadc->Instance->CR2 |= ADC_CR2_EOCSelection(hadc->Init.EOCSelection);
2000 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA))
2003 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
2011 if (ADC_IS_SOFTWARE_START_REGULAR(hadc) &&
2012 (hadc->Init.ContinuousConvMode == DISABLE) &&
2013 (HAL_IS_BIT_CLR(hadc->Instance->SQR1, ADC_SQR1_L) ||
2014 HAL_IS_BIT_CLR(hadc->Instance->CR2, ADC_CR2_EOCS)))
2020 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_EOC);
2023 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
2025 if (HAL_IS_BIT_CLR(hadc->State, HAL_ADC_STATE_INJ_BUSY))
2027 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
2032 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2033 hadc->ConvCpltCallback(hadc);
2040 if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) != 0UL)
2043 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2044 hadc->ErrorCallback(hadc);
2052 hadc->DMA_Handle->XferErrorCallback(hdma);
2067 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2068 hadc->ConvHalfCpltCallback(hadc);
2083 hadc->State = HAL_ADC_STATE_ERROR_DMA;
2085 hadc->ErrorCode |= HAL_ADC_ERROR_DMA;
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.
HAL_StatusTypeDef HAL_ADC_UnRegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID)
Unregister a ADC Callback ADC callback is redirected to the weak predefined callback.
HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)
Deinitializes the ADCx peripheral registers to their default reset values.
HAL_StatusTypeDef HAL_ADC_RegisterCallback(ADC_HandleTypeDef *hadc, HAL_ADC_CallbackIDTypeDef CallbackID, pADC_CallbackTypeDef pCallback)
Register a User ADC Callback To be used instead of the weak predefined callback.
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
HAL_ADC_CallbackIDTypeDef
HAL ADC Callback ID enumeration definition.
struct __ADC_HandleTypeDef else typedef struct endif ADC_HandleTypeDef
ADC handle Structure definition.
void(* pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc)
HAL ADC Callback pointer definition.
@ HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID
@ HAL_ADC_CONVERSION_COMPLETE_CB_ID
@ HAL_ADC_CONVERSION_HALF_CB_ID
@ HAL_ADC_MSPDEINIT_CB_ID
@ HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID
ADC Configuration multi-mode structure definition.
Structure definition of ADC channel for regular group.
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.