314 #ifdef HAL_ADC_MODULE_ENABLED 323 #define ADC_CFGR_FIELDS_1 ((ADC_CFGR_RES | ADC_CFGR_ALIGN |\ 324 ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\ 325 ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM |\ 326 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL)) 333 #define ADC_ENABLE_TIMEOUT (2UL) 334 #define ADC_DISABLE_TIMEOUT (2UL) 344 #define ADC_CONVERSION_TIME_MAX_CPU_CYCLES (653UL * 4096UL * 256UL) 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;
709 HAL_StatusTypeDef tmp_hal_status;
721 SET_BIT(hadc->State, HAL_ADC_STATE_BUSY_INTERNAL);
732 SET_BIT(hadc->Instance->CFGR, ADC_CFGR_JQM);
735 if (tmp_hal_status ==
HAL_OK)
741 if (tmp_hal_status ==
HAL_OK)
744 hadc->State = HAL_ADC_STATE_READY;
756 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_AWD3 | ADC_IT_AWD2 | ADC_IT_AWD1 |
757 ADC_IT_JQOVF | ADC_IT_OVR |
758 ADC_IT_JEOS | ADC_IT_JEOC |
759 ADC_IT_EOS | ADC_IT_EOC |
760 ADC_IT_EOSMP | ADC_IT_RDY));
763 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_AWD3 | ADC_FLAG_AWD2 | ADC_FLAG_AWD1 |
764 ADC_FLAG_JQOVF | ADC_FLAG_OVR |
765 ADC_FLAG_JEOS | ADC_FLAG_JEOC |
766 ADC_FLAG_EOS | ADC_FLAG_EOC |
767 ADC_FLAG_EOSMP | ADC_FLAG_RDY));
774 CLEAR_BIT(hadc->Instance->CR, ADC_CR_ADVREGEN | ADC_CR_ADCALDIF);
775 SET_BIT(hadc->Instance->CR, ADC_CR_DEEPPWD);
778 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_FIELDS);
779 SET_BIT(hadc->Instance->CFGR, ADC_CFGR_JQDIS);
782 CLEAR_BIT(hadc->Instance->CFGR2, ADC_CFGR2_ROVSM | ADC_CFGR2_TROVS | ADC_CFGR2_OVSS |
783 ADC_CFGR2_OVSR | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSE);
786 CLEAR_BIT(hadc->Instance->SMPR1, ADC_SMPR1_FIELDS);
789 CLEAR_BIT(hadc->Instance->SMPR2, ADC_SMPR2_SMP18 | ADC_SMPR2_SMP17 | ADC_SMPR2_SMP16 |
790 ADC_SMPR2_SMP15 | ADC_SMPR2_SMP14 | ADC_SMPR2_SMP13 |
791 ADC_SMPR2_SMP12 | ADC_SMPR2_SMP11 | ADC_SMPR2_SMP10);
794 CLEAR_BIT(hadc->Instance->TR1, ADC_TR1_HT1 | ADC_TR1_LT1);
797 CLEAR_BIT(hadc->Instance->TR2, ADC_TR2_HT2 | ADC_TR2_LT2);
800 CLEAR_BIT(hadc->Instance->TR3, ADC_TR3_HT3 | ADC_TR3_LT3);
803 CLEAR_BIT(hadc->Instance->SQR1, ADC_SQR1_SQ4 | ADC_SQR1_SQ3 | ADC_SQR1_SQ2 |
804 ADC_SQR1_SQ1 | ADC_SQR1_L);
807 CLEAR_BIT(hadc->Instance->SQR2, ADC_SQR2_SQ9 | ADC_SQR2_SQ8 | ADC_SQR2_SQ7 |
808 ADC_SQR2_SQ6 | ADC_SQR2_SQ5);
811 CLEAR_BIT(hadc->Instance->SQR3, ADC_SQR3_SQ14 | ADC_SQR3_SQ13 | ADC_SQR3_SQ12 |
812 ADC_SQR3_SQ11 | ADC_SQR3_SQ10);
815 CLEAR_BIT(hadc->Instance->SQR4, ADC_SQR4_SQ16 | ADC_SQR4_SQ15);
823 CLEAR_BIT(hadc->Instance->OFR1, ADC_OFR1_OFFSET1_EN | ADC_OFR1_OFFSET1_CH | ADC_OFR1_OFFSET1);
825 CLEAR_BIT(hadc->Instance->OFR2, ADC_OFR2_OFFSET2_EN | ADC_OFR2_OFFSET2_CH | ADC_OFR2_OFFSET2);
827 CLEAR_BIT(hadc->Instance->OFR3, ADC_OFR3_OFFSET3_EN | ADC_OFR3_OFFSET3_CH | ADC_OFR3_OFFSET3);
829 CLEAR_BIT(hadc->Instance->OFR4, ADC_OFR4_OFFSET4_EN | ADC_OFR4_OFFSET4_CH | ADC_OFR4_OFFSET4);
835 CLEAR_BIT(hadc->Instance->AWD2CR, ADC_AWD2CR_AWD2CH);
838 CLEAR_BIT(hadc->Instance->AWD3CR, ADC_AWD3CR_AWD3CH);
841 CLEAR_BIT(hadc->Instance->DIFSEL, ADC_DIFSEL_DIFSEL);
844 CLEAR_BIT(hadc->Instance->CALFACT, ADC_CALFACT_CALFACT_D | ADC_CALFACT_CALFACT_S);
851 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL)
860 ADC_CLEAR_COMMON_CONTROL_REGISTER(hadc);
874 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 875 if (hadc->MspDeInitCallback == NULL)
881 hadc->MspDeInitCallback(hadc);
888 ADC_CLEAR_ERRORCODE(hadc);
891 hadc->InjectionConfig.ContextQueue = 0;
892 hadc->InjectionConfig.ChannelCount = 0;
895 hadc->State = HAL_ADC_STATE_RESET;
901 return tmp_hal_status;
936 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 962 HAL_StatusTypeDef status =
HAL_OK;
964 if (pCallback == NULL)
967 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
972 if ((hadc->State & HAL_ADC_STATE_READY) != 0UL)
977 hadc->ConvCpltCallback = pCallback;
981 hadc->ConvHalfCpltCallback = pCallback;
985 hadc->LevelOutOfWindowCallback = pCallback;
989 hadc->ErrorCallback = pCallback;
993 hadc->InjectedConvCpltCallback = pCallback;
997 hadc->InjectedQueueOverflowCallback = pCallback;
1001 hadc->LevelOutOfWindow2Callback = pCallback;
1005 hadc->LevelOutOfWindow3Callback = pCallback;
1009 hadc->EndOfSamplingCallback = pCallback;
1013 hadc->MspInitCallback = pCallback;
1017 hadc->MspDeInitCallback = pCallback;
1022 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1029 else if (HAL_ADC_STATE_RESET == hadc->State)
1034 hadc->MspInitCallback = pCallback;
1038 hadc->MspDeInitCallback = pCallback;
1043 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1053 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1086 HAL_StatusTypeDef status =
HAL_OK;
1088 if ((hadc->State & HAL_ADC_STATE_READY) != 0UL)
1138 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1145 else if (HAL_ADC_STATE_RESET == hadc->State)
1159 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1169 hadc->ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1217 HAL_StatusTypeDef tmp_hal_status;
1218 #if defined(ADC_MULTIMODE_SUPPORT) 1219 const ADC_TypeDef *tmpADC_Master;
1220 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
1236 if (tmp_hal_status ==
HAL_OK)
1241 ADC_STATE_CLR_SET(hadc->State,
1242 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR | HAL_ADC_STATE_REG_EOSMP,
1243 HAL_ADC_STATE_REG_BUSY);
1245 #if defined(ADC_MULTIMODE_SUPPORT) 1249 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
1250 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1253 CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
1259 if (HAL_IS_BIT_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY))
1262 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
1267 ADC_CLEAR_ERRORCODE(hadc);
1272 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR));
1287 #if defined(ADC_MULTIMODE_SUPPORT) 1288 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
1289 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1290 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1291 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1295 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO) != 0UL)
1297 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1306 SET_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
1309 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
1310 if (READ_BIT(tmpADC_Master->CFGR, ADC_CFGR_JAUTO) != 0UL)
1312 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1317 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO) != 0UL)
1319 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1334 tmp_hal_status = HAL_BUSY;
1338 return tmp_hal_status;
1352 HAL_StatusTypeDef tmp_hal_status;
1364 if (tmp_hal_status ==
HAL_OK)
1370 if (tmp_hal_status ==
HAL_OK)
1373 ADC_STATE_CLR_SET(hadc->State,
1374 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
1375 HAL_ADC_STATE_READY);
1383 return tmp_hal_status;
1407 uint32_t tmp_Flag_End;
1409 #if defined(ADC_MULTIMODE_SUPPORT) 1410 const ADC_TypeDef *tmpADC_Master;
1411 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
1418 if (hadc->Init.EOCSelection == ADC_EOC_SEQ_CONV)
1420 tmp_Flag_End = ADC_FLAG_EOS;
1431 #if defined(ADC_MULTIMODE_SUPPORT) 1432 if ((tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1433 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1434 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1438 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_DMAEN) != 0UL)
1440 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1445 tmp_Flag_End = (ADC_FLAG_EOC);
1453 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1458 tmp_Flag_End = (ADC_FLAG_EOC);
1463 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_DMAEN) != 0UL)
1465 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1470 tmp_Flag_End = (ADC_FLAG_EOC);
1479 while ((hadc->Instance->ISR & tmp_Flag_End) == 0UL)
1482 if (Timeout != HAL_MAX_DELAY)
1484 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
1487 SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
1498 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
1503 && (hadc->Init.ContinuousConvMode == DISABLE)
1507 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_EOS))
1510 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1512 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) == 0UL)
1514 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
1522 #if defined(ADC_MULTIMODE_SUPPORT) 1523 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
1524 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1525 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1526 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1530 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
1535 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
1536 tmp_cfgr = READ_REG(tmpADC_Master->CFGR);
1540 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
1544 if (tmp_Flag_End == ADC_FLAG_EOS)
1546 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOS);
1553 if (READ_BIT(tmp_cfgr, ADC_CFGR_AUTDLY) == 0UL)
1555 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS));
1595 while (__HAL_ADC_GET_FLAG(hadc, EventType) == 0UL)
1598 if (Timeout != HAL_MAX_DELAY)
1600 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
1603 SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
1616 case ADC_EOSMP_EVENT:
1618 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOSMP);
1621 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_EOSMP);
1637 SET_BIT(hadc->State, HAL_ADC_STATE_AWD1);
1640 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD1);
1645 case ADC_AWD2_EVENT:
1647 SET_BIT(hadc->State, HAL_ADC_STATE_AWD2);
1650 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD2);
1655 case ADC_AWD3_EVENT:
1657 SET_BIT(hadc->State, HAL_ADC_STATE_AWD3);
1660 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_AWD3);
1665 case ADC_JQOVF_EVENT:
1667 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_JQOVF);
1670 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_JQOVF);
1673 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JQOVF);
1683 if (hadc->Init.Overrun == ADC_OVR_DATA_PRESERVED)
1686 SET_BIT(hadc->State, HAL_ADC_STATE_REG_OVR);
1689 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_OVR);
1696 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_OVR);
1730 HAL_StatusTypeDef tmp_hal_status;
1731 #if defined(ADC_MULTIMODE_SUPPORT) 1732 const ADC_TypeDef *tmpADC_Master;
1733 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
1749 if (tmp_hal_status ==
HAL_OK)
1754 ADC_STATE_CLR_SET(hadc->State,
1755 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR | HAL_ADC_STATE_REG_EOSMP,
1756 HAL_ADC_STATE_REG_BUSY);
1758 #if defined(ADC_MULTIMODE_SUPPORT) 1762 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
1763 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1766 CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
1772 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) != 0UL)
1775 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
1780 ADC_CLEAR_ERRORCODE(hadc);
1785 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR));
1793 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_EOS | ADC_IT_OVR));
1796 switch (hadc->Init.EOCSelection)
1798 case ADC_EOC_SEQ_CONV:
1799 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_EOS);
1803 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_EOC);
1811 if (hadc->Init.Overrun == ADC_OVR_DATA_PRESERVED)
1813 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR);
1824 #if defined(ADC_MULTIMODE_SUPPORT) 1825 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
1826 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1827 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1828 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1832 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO) != 0UL)
1834 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1840 switch (hadc->Init.EOCSelection)
1842 case ADC_EOC_SEQ_CONV:
1843 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
1844 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOS);
1848 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOS);
1849 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC);
1860 SET_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
1863 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
1864 if (READ_BIT(tmpADC_Master->CFGR, ADC_CFGR_JAUTO) != 0UL)
1868 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1870 switch (hadc->Init.EOCSelection)
1872 case ADC_EOC_SEQ_CONV:
1873 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
1874 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOS);
1878 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOS);
1879 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC);
1886 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO) != 0UL)
1888 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_EOC, HAL_ADC_STATE_INJ_BUSY);
1894 switch (hadc->Init.EOCSelection)
1896 case ADC_EOC_SEQ_CONV:
1897 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
1898 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOS);
1902 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOS);
1903 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC);
1921 tmp_hal_status = HAL_BUSY;
1925 return tmp_hal_status;
1937 HAL_StatusTypeDef tmp_hal_status;
1949 if (tmp_hal_status ==
HAL_OK)
1953 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_EOS | ADC_IT_OVR));
1959 if (tmp_hal_status ==
HAL_OK)
1962 ADC_STATE_CLR_SET(hadc->State,
1963 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
1964 HAL_ADC_STATE_READY);
1972 return tmp_hal_status;
1990 HAL_StatusTypeDef tmp_hal_status;
1991 #if defined(ADC_MULTIMODE_SUPPORT) 1992 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
2004 #if defined(ADC_MULTIMODE_SUPPORT) 2007 if ((tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2008 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
2009 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
2017 if (tmp_hal_status ==
HAL_OK)
2022 ADC_STATE_CLR_SET(hadc->State,
2023 HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR | HAL_ADC_STATE_REG_EOSMP,
2024 HAL_ADC_STATE_REG_BUSY);
2026 #if defined(ADC_MULTIMODE_SUPPORT) 2030 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
2031 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2034 CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
2039 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) != 0UL)
2042 CLEAR_BIT(hadc->ErrorCode, (HAL_ADC_ERROR_OVR | HAL_ADC_ERROR_DMA));
2047 ADC_CLEAR_ERRORCODE(hadc);
2066 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR));
2076 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR);
2079 SET_BIT(hadc->Instance->CFGR, ADC_CFGR_DMAEN);
2082 tmp_hal_status =
HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&hadc->Instance->DR, (uint32_t)pData, Length);
2098 #if defined(ADC_MULTIMODE_SUPPORT) 2101 tmp_hal_status = HAL_ERROR;
2109 tmp_hal_status = HAL_BUSY;
2113 return tmp_hal_status;
2131 HAL_StatusTypeDef tmp_hal_status;
2143 if (tmp_hal_status ==
HAL_OK)
2146 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_DMAEN);
2155 if (tmp_hal_status !=
HAL_OK)
2158 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
2163 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
2168 if (tmp_hal_status ==
HAL_OK)
2178 if (tmp_hal_status ==
HAL_OK)
2181 ADC_STATE_CLR_SET(hadc->State,
2182 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
2183 HAL_ADC_STATE_READY);
2192 return tmp_hal_status;
2223 return hadc->Instance->DR;
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);
2701 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
2702 uint32_t tmpOffsetShifted;
2703 uint32_t tmp_config_internal_channel;
2704 __IO uint32_t wait_loop_index = 0;
2705 uint32_t tmp_adc_is_conversion_on_going_regular;
2706 uint32_t tmp_adc_is_conversion_on_going_injected;
2721 if (sConfig->
SingleDiff != ADC_DIFFERENTIAL_ENDED)
2740 #if !defined (USE_FULL_ASSERT) 2746 if (sConfig->
Rank <= 5U)
2748 switch (sConfig->
Rank)
2750 case 2U: sConfig->
Rank = ADC_REGULAR_RANK_2;
break;
2751 case 3U: sConfig->
Rank = ADC_REGULAR_RANK_3;
break;
2752 case 4U: sConfig->
Rank = ADC_REGULAR_RANK_4;
break;
2753 case 5U: sConfig->
Rank = ADC_REGULAR_RANK_5;
break;
2755 default: sConfig->
Rank = ADC_REGULAR_RANK_1;
break;
2770 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
2771 && (tmp_adc_is_conversion_on_going_injected == 0UL)
2774 #if defined(ADC_SMPR1_SMPPLUS) 2801 tmpOffsetShifted = ADC_OFFSET_SHIFT_RESOLUTION(hadc, (uint32_t)sConfig->
Offset);
2841 if (sConfig->
SingleDiff == ADC_DIFFERENTIAL_ENDED)
2846 (uint32_t)(__LL_ADC_DECIMAL_NB_TO_CHANNEL((__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->
Channel) + 1UL) & 0x1FUL)),
2858 if (__LL_ADC_IS_CHANNEL_INTERNAL(sConfig->
Channel))
2864 if ((sConfig->
Channel == ADC_CHANNEL_TEMPSENSOR) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_TEMPSENSOR) == 0UL))
2866 if (ADC_TEMPERATURE_SENSOR_INSTANCE(hadc))
2869 LL_ADC_PATH_INTERNAL_TEMPSENSOR | tmp_config_internal_channel);
2876 wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * (SystemCoreClock / (100000UL * 2UL)));
2877 while (wait_loop_index != 0UL)
2883 else if ((sConfig->
Channel == ADC_CHANNEL_VBAT) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL))
2885 if (ADC_BATTERY_VOLTAGE_INSTANCE(hadc))
2888 LL_ADC_PATH_INTERNAL_VBAT | tmp_config_internal_channel);
2891 else if ((sConfig->
Channel == ADC_CHANNEL_VREFINT)
2892 && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VREFINT) == 0UL))
2894 if (ADC_VREFINT_INSTANCE(hadc))
2897 LL_ADC_PATH_INTERNAL_VREFINT | tmp_config_internal_channel);
2913 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
2915 tmp_hal_status = HAL_ERROR;
2922 return tmp_hal_status;
2943 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
2944 uint32_t tmpAWDHighThresholdShifted;
2945 uint32_t tmpAWDLowThresholdShifted;
2946 uint32_t tmp_adc_is_conversion_on_going_regular;
2947 uint32_t tmp_adc_is_conversion_on_going_injected;
2955 if ((AnalogWDGConfig->
WatchdogMode == ADC_ANALOGWATCHDOG_SINGLE_REG) ||
2956 (AnalogWDGConfig->
WatchdogMode == ADC_ANALOGWATCHDOG_SINGLE_INJEC) ||
2957 (AnalogWDGConfig->
WatchdogMode == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC))
2963 if (hadc->Init.OversamplingMode == ENABLE)
2988 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
2989 && (tmp_adc_is_conversion_on_going_injected == 0UL)
3000 case ADC_ANALOGWATCHDOG_SINGLE_REG:
3002 LL_ADC_GROUP_REGULAR));
3005 case ADC_ANALOGWATCHDOG_SINGLE_INJEC:
3007 LL_ADC_GROUP_INJECTED));
3010 case ADC_ANALOGWATCHDOG_SINGLE_REGINJEC:
3012 LL_ADC_GROUP_REGULAR_INJECTED));
3015 case ADC_ANALOGWATCHDOG_ALL_REG:
3019 case ADC_ANALOGWATCHDOG_ALL_INJEC:
3023 case ADC_ANALOGWATCHDOG_ALL_REGINJEC:
3035 tmpAWDHighThresholdShifted = ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(hadc, AnalogWDGConfig->
HighThreshold);
3036 tmpAWDLowThresholdShifted = ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(hadc, AnalogWDGConfig->
LowThreshold);
3042 CLEAR_BIT(hadc->State, HAL_ADC_STATE_AWD1);
3051 if (AnalogWDGConfig->
ITMode == ENABLE)
3065 case ADC_ANALOGWATCHDOG_SINGLE_REG:
3066 case ADC_ANALOGWATCHDOG_SINGLE_INJEC:
3067 case ADC_ANALOGWATCHDOG_SINGLE_REGINJEC:
3072 SET_BIT(hadc->Instance->AWD2CR, (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB(AnalogWDGConfig->
Channel) & 0x1FUL)));
3076 SET_BIT(hadc->Instance->AWD3CR, (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB(AnalogWDGConfig->
Channel) & 0x1FUL)));
3080 case ADC_ANALOGWATCHDOG_ALL_REG:
3081 case ADC_ANALOGWATCHDOG_ALL_INJEC:
3082 case ADC_ANALOGWATCHDOG_ALL_REGINJEC:
3093 tmpAWDHighThresholdShifted = ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(hadc, AnalogWDGConfig->
HighThreshold);
3094 tmpAWDLowThresholdShifted = ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(hadc, AnalogWDGConfig->
LowThreshold);
3102 CLEAR_BIT(hadc->State, HAL_ADC_STATE_AWD2);
3111 if (AnalogWDGConfig->
ITMode == ENABLE)
3124 CLEAR_BIT(hadc->State, HAL_ADC_STATE_AWD3);
3133 if (AnalogWDGConfig->
ITMode == ENABLE)
3150 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
3152 tmp_hal_status = HAL_ERROR;
3158 return tmp_hal_status;
3212 return hadc->ErrorCode;
3240 uint32_t Conversion_Timeout_CPU_cycles = 0UL;
3241 uint32_t conversion_group_reassigned = ConversionGroup;
3242 uint32_t tmp_ADC_CR_ADSTART_JADSTART;
3243 uint32_t tmp_adc_is_conversion_on_going_regular;
3244 uint32_t tmp_adc_is_conversion_on_going_injected;
3248 assert_param(IS_ADC_CONVERSION_GROUP(ConversionGroup));
3254 if ((tmp_adc_is_conversion_on_going_regular != 0UL)
3255 || (tmp_adc_is_conversion_on_going_injected != 0UL)
3264 if (((hadc->Instance->CFGR & ADC_CFGR_JAUTO) != 0UL)
3265 && (hadc->Init.ContinuousConvMode == ENABLE)
3266 && (hadc->Init.LowPowerAutoWait == ENABLE)
3270 conversion_group_reassigned = ADC_REGULAR_GROUP;
3273 while (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOS) == 0UL)
3275 if (Conversion_Timeout_CPU_cycles >= (ADC_CONVERSION_TIME_MAX_CPU_CYCLES * 4UL))
3278 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3281 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3285 Conversion_Timeout_CPU_cycles ++;
3289 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOS);
3293 if (conversion_group_reassigned != ADC_INJECTED_GROUP)
3307 if (conversion_group_reassigned != ADC_REGULAR_GROUP)
3321 switch (conversion_group_reassigned)
3323 case ADC_REGULAR_INJECTED_GROUP:
3324 tmp_ADC_CR_ADSTART_JADSTART = (ADC_CR_ADSTART | ADC_CR_JADSTART);
3326 case ADC_INJECTED_GROUP:
3327 tmp_ADC_CR_ADSTART_JADSTART = ADC_CR_JADSTART;
3331 tmp_ADC_CR_ADSTART_JADSTART = ADC_CR_ADSTART;
3338 while ((hadc->Instance->CR & tmp_ADC_CR_ADSTART_JADSTART) != 0UL)
3340 if ((
HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT)
3343 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3346 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3378 if ((hadc->Instance->CR & (ADC_CR_ADCAL | ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADDIS | ADC_CR_ADEN)) != 0UL)
3381 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3384 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3395 while (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == 0UL)
3410 if ((
HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT)
3413 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3416 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3443 && (tmp_adc_is_disable_on_going == 0UL)
3447 if ((hadc->Instance->CR & (ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN)) == ADC_CR_ADEN)
3451 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOSMP | ADC_FLAG_RDY));
3456 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3459 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3468 while ((hadc->Instance->CR & ADC_CR_ADEN) != 0UL)
3470 if ((
HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT)
3473 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
3476 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
3498 if ((hadc->State & (HAL_ADC_STATE_ERROR_INTERNAL | HAL_ADC_STATE_ERROR_DMA)) == 0UL)
3501 SET_BIT(hadc->State, HAL_ADC_STATE_REG_EOC);
3507 if ((hadc->Instance->ISR & ADC_FLAG_EOS) != 0UL)
3513 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_CONT) == 0UL)
3516 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
3517 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) == 0UL)
3519 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
3528 if (READ_BIT(hadc->Instance->CFGR, ADC_CFGR_DMACFG) == 0UL)
3531 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
3532 if ((hadc->State & HAL_ADC_STATE_INJ_BUSY) == 0UL)
3534 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
3540 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 3541 hadc->ConvCpltCallback(hadc);
3548 if ((hadc->State & HAL_ADC_STATE_ERROR_INTERNAL) != 0UL)
3551 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 3552 hadc->ErrorCallback(hadc);
3560 hadc->DMA_Handle->XferErrorCallback(hdma);
3576 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 3577 hadc->ConvHalfCpltCallback(hadc);
3594 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
3597 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_DMA);
3600 #if (USE_HAL_ADC_REGISTER_CALLBACKS == 1) 3601 hadc->ErrorCallback(hadc);
__STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx)
Enable interruption ADC analog watchdog 1. IER AWD1IE LL_ADC_EnableIT_AWD1.
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef *hadc)
Stop ADC conversion of regular group (and injected group in case of auto_injection mode)...
__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group regular conversion trigger source internal (SW start) or external.
__STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx)
Clear flag ADC analog watchdog 1. ISR AWD1 LL_ADC_ClearFlag_AWD1.
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Wait for regular group conversion to be completed.
__STATIC_INLINE void LL_ADC_DisableDeepPowerDown(ADC_TypeDef *ADCx)
Disable ADC deep power down mode.
HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef *hadc, ADC_AnalogWDGConfTypeDef *AnalogWDGConfig)
Configure the analog watchdog.
__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance enable state.
__STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
Set ADC group regular sequence: channel on the selected scan sequence rank.
void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 2 callback in non-blocking mode.
DMA handle Structure definition.
void HAL_ADC_IRQHandler(ADC_HandleTypeDef *hadc)
Handle ADC interrupt request.
__STATIC_INLINE void LL_ADC_INJ_StopConversion(ADC_TypeDef *ADCx)
Stop ADC group injected conversion.
__STATIC_INLINE uint32_t LL_ADC_GetOffsetChannel(ADC_TypeDef *ADCx, uint32_t Offsety)
Get for the ADC selected offset number 1, 2, 3 or 4: Channel to which the offset programmed will be a...
Structure definition of ADC channel for regular group.
HAL_ADC_CallbackIDTypeDef
HAL ADC Callback ID enumeration definition.
This file contains all the functions prototypes for the HAL module driver.
__STATIC_INLINE uint32_t LL_ADC_IsDisableOngoing(ADC_TypeDef *ADCx)
Get the selected ADC instance disable state. CR ADDIS LL_ADC_IsDisableOngoing.
__STATIC_INLINE uint32_t LL_ADC_IsInternalRegulatorEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance internal voltage regulator state. CR ADVREGEN LL_ADC_IsInternalRegulat...
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc)
Initialize the ADC peripheral and regular group according to parameters specified in structure "ADC_I...
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
Injected conversion complete callback in non-blocking mode.
__STATIC_INLINE void LL_ADC_SetChannelSingleDiff(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff)
Set mode single-ended or differential input of the selected ADC channel.
__STATIC_INLINE void LL_ADC_ClearFlag_AWD3(ADC_TypeDef *ADCx)
Clear flag ADC analog watchdog 3. ISR AWD3 LL_ADC_ClearFlag_AWD3.
void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
__STATIC_INLINE void LL_ADC_EnableInternalRegulator(ADC_TypeDef *ADCx)
Enable ADC instance internal voltage regulator.
__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)...
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)
Deinitialize the ADC peripheral registers to their default reset values, with deinitialization of the...
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
Initialize the ADC MSP.
void ADC_DMAError(DMA_HandleTypeDef *hdma)
DMA error callback.
__STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx)
Start ADC group regular conversion.
__STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx)
Enable the selected ADC instance.
__STATIC_INLINE void LL_ADC_DisableIT_AWD2(ADC_TypeDef *ADCx)
Disable interruption ADC analog watchdog 2. IER AWD2IE LL_ADC_DisableIT_AWD2.
HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef *hadc)
Enable the selected ADC.
__STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx)
Disable the selected ADC instance.
void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef *hadc)
Injected context queue overflow callback.
__STATIC_INLINE void LL_ADC_EnableIT_AWD3(ADC_TypeDef *ADCx)
Enable interruption ADC analog watchdog 3. IER AWD3IE LL_ADC_EnableIT_AWD3.
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.
__STATIC_INLINE void LL_ADC_SetOffsetState(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetState)
Set for the ADC selected offset number 1, 2, 3 or 4: force offset state disable or enable without mod...
CLEAR_BIT(hrtc->Instance->CR, RTC_CR_WUTE)
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enable ADC, start conversion of regular group and transfer result through DMA.
struct __ADC_HandleTypeDef else typedef struct endif ADC_HandleTypeDef
ADC handle Structure definition.
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
Enable ADC, start conversion of regular group.
__STATIC_INLINE void LL_ADC_REG_StopConversion(ADC_TypeDef *ADCx)
Stop ADC group regular conversion.
HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef *hadc)
Stop ADC conversion of regular group (and injected group in case of auto_injection mode)...
__STATIC_INLINE void LL_ADC_SetCommonClock(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t CommonClock)
Set parameter common to several ADC: Clock source and prescaler.
__STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
Set sampling time of the selected ADC channel Unit: ADC clock cycles.
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
Conversion complete callback in non-blocking mode.
void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
__STATIC_INLINE void LL_ADC_DisableIT_AWD3(ADC_TypeDef *ADCx)
Disable interruption ADC analog watchdog 3. IER AWD3IE LL_ADC_DisableIT_AWD3.
uint32_t HAL_ADC_GetError(ADC_HandleTypeDef *hadc)
Return the ADC error code.
__STATIC_INLINE uint32_t LL_ADC_INJ_IsConversionOngoing(ADC_TypeDef *ADCx)
Get ADC group injected conversion state. CR JADSTART LL_ADC_INJ_IsConversionOngoing.
__STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON)
Get parameter common to several ADC: measurement path to internal channels (VrefInt, temperature sensor, ...).
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.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
void(* pADC_CallbackTypeDef)(ADC_HandleTypeDef *hadc)
HAL ADC Callback pointer definition.
Structure definition of ADC analog watchdog.
__STATIC_INLINE void LL_ADC_SetOffset(ADC_TypeDef *ADCx, uint32_t Offsety, uint32_t Channel, uint32_t OffsetLevel)
Set ADC selected offset number 1, 2, 3 or 4.
__STATIC_INLINE void LL_ADC_ClearFlag_AWD2(ADC_TypeDef *ADCx)
Clear flag ADC analog watchdog 2. ISR AWD2 LL_ADC_ClearFlag_AWD2.
void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 3 callback in non-blocking mode.
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc)
Stop ADC conversion of regular group (and injected channels in case of auto_injection mode)...
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 ADC_ConversionStop(ADC_HandleTypeDef *hadc, uint32_t ConversionGroup)
Stop ADC conversion.
__STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx)
Disable interruption ADC analog watchdog 1. IER AWD1IE LL_ADC_DisableIT_AWD1.
__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group injected conversion trigger source internal (SW start) or external. ...
HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef *hadc)
Disable the selected ADC.
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef *hadc)
Get ADC regular group conversion result.
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)
Configure a channel to be assigned to ADC group regular.
uint32_t HAL_ADC_GetState(ADC_HandleTypeDef *hadc)
Return the ADC handle state.
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 void LL_ADC_ConfigAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue, uint32_t AWDThresholdLowValue)
Set ADC analog watchdog thresholds value of both thresholds high and low.
__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)
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.
__STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
Set ADC analog watchdog monitored channels: a single channel, multiple channels or all channels...
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
Analog watchdog 1 callback in non-blocking mode.
HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef *hadc, uint32_t EventType, uint32_t Timeout)
Poll for ADC event.
__STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal)
Set parameter common to several ADC: measurement path to internal channels (VrefInt, temperature sensor, ...).
__STATIC_INLINE void LL_ADC_SetSamplingTimeCommonConfig(ADC_TypeDef *ADCx, uint32_t SamplingTimeCommonConfig)
Set ADC sampling time common configuration impacting settings of sampling time channel wise...
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc)
Enable ADC, start conversion of regular group with interruption.
void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
DeInitialize the ADC MSP.
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
__STATIC_INLINE void LL_ADC_EnableIT_AWD2(ADC_TypeDef *ADCx)
Enable interruption ADC analog watchdog 2. IER AWD2IE LL_ADC_EnableIT_AWD2.