54 #ifdef HAL_ADC_MODULE_ENABLED 63 #define ADC_JSQR_FIELDS ((ADC_JSQR_JL | ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN |\ 64 ADC_JSQR_JSQ1 | ADC_JSQR_JSQ2 |\ 65 ADC_JSQR_JSQ3 | ADC_JSQR_JSQ4 )) 75 #define ADC_CALIBRATION_TIMEOUT (296960UL) 131 HAL_StatusTypeDef tmp_hal_status;
132 __IO uint32_t wait_loop_index = 0UL;
147 if (tmp_hal_status ==
HAL_OK)
150 ADC_STATE_CLR_SET(hadc->State,
151 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
152 HAL_ADC_STATE_BUSY_INTERNAL);
161 if (wait_loop_index >= ADC_CALIBRATION_TIMEOUT)
164 ADC_STATE_CLR_SET(hadc->State,
165 HAL_ADC_STATE_BUSY_INTERNAL,
166 HAL_ADC_STATE_ERROR_INTERNAL);
176 ADC_STATE_CLR_SET(hadc->State,
177 HAL_ADC_STATE_BUSY_INTERNAL,
178 HAL_ADC_STATE_READY);
182 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
192 return tmp_hal_status;
225 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
226 uint32_t tmp_adc_is_conversion_on_going_regular;
227 uint32_t tmp_adc_is_conversion_on_going_injected;
243 && (tmp_adc_is_conversion_on_going_regular == 0UL)
244 && (tmp_adc_is_conversion_on_going_injected == 0UL)
253 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
255 SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
258 tmp_hal_status = HAL_ERROR;
265 return tmp_hal_status;
281 HAL_StatusTypeDef tmp_hal_status;
282 uint32_t tmp_config_injected_queue;
283 #if defined(ADC_MULTIMODE_SUPPORT) 284 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
303 tmp_config_injected_queue = READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JQDIS);
305 if ((READ_BIT(hadc->Instance->JSQR, ADC_JSQR_JEXTEN) == 0UL)
306 && (tmp_config_injected_queue == 0UL)
309 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
320 if (tmp_hal_status ==
HAL_OK)
323 if ((hadc->State & HAL_ADC_STATE_REG_BUSY) != 0UL)
326 CLEAR_BIT(hadc->ErrorCode, HAL_ADC_ERROR_JQOVF);
331 ADC_CLEAR_ERRORCODE(hadc);
337 ADC_STATE_CLR_SET(hadc->State,
338 HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC,
339 HAL_ADC_STATE_INJ_BUSY);
341 #if defined(ADC_MULTIMODE_SUPPORT) 345 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
346 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
349 CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
355 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JEOC | ADC_FLAG_JEOS));
374 #if defined(ADC_MULTIMODE_SUPPORT) 375 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
376 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
377 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_SIMULT)
378 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_INTERL)
390 SET_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
408 return tmp_hal_status;
430 HAL_StatusTypeDef tmp_hal_status;
443 if (tmp_hal_status ==
HAL_OK)
451 if (tmp_hal_status ==
HAL_OK)
454 ADC_STATE_CLR_SET(hadc->State,
455 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
456 HAL_ADC_STATE_READY);
464 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
472 return tmp_hal_status;
486 uint32_t tmp_Flag_End;
487 uint32_t tmp_adc_inj_is_trigger_source_sw_start;
488 uint32_t tmp_adc_reg_is_trigger_source_sw_start;
490 #if defined(ADC_MULTIMODE_SUPPORT) 491 const ADC_TypeDef *tmpADC_Master;
492 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
499 if (hadc->Init.EOCSelection == ADC_EOC_SEQ_CONV)
501 tmp_Flag_End = ADC_FLAG_JEOS;
505 tmp_Flag_End = ADC_FLAG_JEOC;
512 while ((hadc->Instance->ISR & tmp_Flag_End) == 0UL)
515 if (Timeout != HAL_MAX_DELAY)
517 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
520 SET_BIT(hadc->State, HAL_ADC_STATE_TIMEOUT);
536 #if defined(ADC_MULTIMODE_SUPPORT) 537 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
538 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
539 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_SIMULT)
540 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_INTERL)
543 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
547 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance);
548 tmp_cfgr = READ_REG(tmpADC_Master->CFGR);
551 tmp_cfgr = READ_REG(hadc->Instance->CFGR);
555 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_EOC);
560 if ((tmp_adc_inj_is_trigger_source_sw_start != 0UL) ||
561 ((READ_BIT(tmp_cfgr, ADC_CFGR_JAUTO) == 0UL) &&
562 ((tmp_adc_reg_is_trigger_source_sw_start != 0UL) &&
563 (READ_BIT(tmp_cfgr, ADC_CFGR_CONT) == 0UL))))
566 if (__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_JEOS))
574 if (READ_BIT(tmp_cfgr, ADC_CFGR_JQM) == 0UL)
577 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
579 if ((hadc->State & HAL_ADC_STATE_REG_BUSY) == 0UL)
581 SET_BIT(hadc->State, HAL_ADC_STATE_READY);
588 if (tmp_Flag_End == ADC_FLAG_JEOS)
594 if (READ_BIT(tmp_cfgr, ADC_CFGR_AUTDLY) == 0UL)
596 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JEOC | ADC_FLAG_JEOS));
601 __HAL_ADC_CLEAR_FLAG(hadc, ADC_FLAG_JEOC);
622 HAL_StatusTypeDef tmp_hal_status;
623 uint32_t tmp_config_injected_queue;
624 #if defined(ADC_MULTIMODE_SUPPORT) 625 uint32_t tmp_multimode_config =
LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->Instance));
644 tmp_config_injected_queue = READ_BIT(hadc->Instance->CFGR, ADC_CFGR_JQDIS);
646 if ((READ_BIT(hadc->Instance->JSQR, ADC_JSQR_JEXTEN) == 0UL)
647 && (tmp_config_injected_queue == 0UL)
650 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
661 if (tmp_hal_status ==
HAL_OK)
664 if ((hadc->State & HAL_ADC_STATE_REG_BUSY) != 0UL)
667 CLEAR_BIT(hadc->ErrorCode, HAL_ADC_ERROR_JQOVF);
672 ADC_CLEAR_ERRORCODE(hadc);
678 ADC_STATE_CLR_SET(hadc->State,
679 HAL_ADC_STATE_READY | HAL_ADC_STATE_INJ_EOC,
680 HAL_ADC_STATE_INJ_BUSY);
682 #if defined(ADC_MULTIMODE_SUPPORT) 686 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
687 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
690 CLEAR_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
696 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_JEOC | ADC_FLAG_JEOS));
705 if ((hadc->Instance->CFGR & ADC_CFGR_JQM) != 0UL)
707 __HAL_ADC_ENABLE_IT(hadc, ADC_FLAG_JQOVF);
711 switch (hadc->Init.EOCSelection)
713 case ADC_EOC_SEQ_CONV:
714 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOC);
715 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOS);
719 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_JEOS);
720 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_JEOC);
736 #if defined(ADC_MULTIMODE_SUPPORT) 737 if ((__LL_ADC_MULTI_INSTANCE_MASTER(hadc->Instance) == hadc->Instance)
738 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
739 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_SIMULT)
740 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_INTERL)
752 SET_BIT(hadc->State, HAL_ADC_STATE_MULTIMODE_SLAVE);
770 return tmp_hal_status;
795 HAL_StatusTypeDef tmp_hal_status;
809 if (tmp_hal_status ==
HAL_OK)
812 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_JEOC | ADC_IT_JEOS | ADC_FLAG_JQOVF));
820 if (tmp_hal_status ==
HAL_OK)
823 ADC_STATE_CLR_SET(hadc->State,
824 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
825 HAL_ADC_STATE_READY);
833 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
841 return tmp_hal_status;
844 #if defined(ADC_MULTIMODE_SUPPORT) 862 HAL_StatusTypeDef tmp_hal_status;
864 ADC_Common_TypeDef *tmpADC_Common;
867 assert_param(IS_ADC_MULTIMODE_MASTER_INSTANCE(hadc->Instance));
868 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.ContinuousConvMode));
869 assert_param(IS_ADC_EXTTRIG_EDGE(hadc->Init.ExternalTrigConvEdge));
870 assert_param(IS_FUNCTIONAL_STATE(hadc->Init.DMAContinuousRequests));
882 ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
884 if (tmphadcSlave.Instance == NULL)
887 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
898 if (tmp_hal_status ==
HAL_OK)
904 if (tmp_hal_status ==
HAL_OK)
907 ADC_STATE_CLR_SET(hadc->State,
908 (HAL_ADC_STATE_READY | HAL_ADC_STATE_REG_EOC | HAL_ADC_STATE_REG_OVR | HAL_ADC_STATE_REG_EOSMP),
909 HAL_ADC_STATE_REG_BUSY);
912 ADC_CLEAR_ERRORCODE(hadc);
924 tmpADC_Common = __LL_ADC_COMMON_INSTANCE(hadc->Instance);
931 __HAL_ADC_CLEAR_FLAG(hadc, (ADC_FLAG_EOC | ADC_FLAG_EOS | ADC_FLAG_OVR));
939 __HAL_ADC_ENABLE_IT(hadc, ADC_IT_OVR);
942 tmp_hal_status =
HAL_DMA_Start_IT(hadc->DMA_Handle, (uint32_t)&tmpADC_Common->CDR, (uint32_t)pData, Length);
958 return tmp_hal_status;
977 HAL_StatusTypeDef tmp_hal_status;
980 uint32_t tmphadcSlave_conversion_on_going;
981 HAL_StatusTypeDef tmphadcSlave_disable_status;
984 assert_param(IS_ADC_MULTIMODE_MASTER_INSTANCE(hadc->Instance));
994 if (tmp_hal_status ==
HAL_OK)
997 ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
999 if (tmphadcSlave.Instance == NULL)
1002 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1018 || (tmphadcSlave_conversion_on_going == 1UL)
1021 if ((
HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT)
1024 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1042 if (tmp_hal_status == HAL_ERROR)
1045 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
1049 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
1054 if (tmp_hal_status ==
HAL_OK)
1056 tmphadcSlave_disable_status =
ADC_Disable(&tmphadcSlave);
1058 (tmphadcSlave_disable_status ==
HAL_OK))
1071 ADC_STATE_CLR_SET(hadc->State,
1072 HAL_ADC_STATE_REG_BUSY | HAL_ADC_STATE_INJ_BUSY,
1073 HAL_ADC_STATE_READY);
1080 return tmp_hal_status;
1090 const ADC_Common_TypeDef *tmpADC_Common;
1093 assert_param(IS_ADC_MULTIMODE_MASTER_INSTANCE(hadc->Instance));
1100 tmpADC_Common = __LL_ADC_COMMON_INSTANCE(hadc->Instance);
1103 return tmpADC_Common->CDR;
1144 switch (InjectedRank)
1146 case ADC_INJECTED_RANK_4:
1147 tmp_jdr = hadc->Instance->JDR4;
1149 case ADC_INJECTED_RANK_3:
1150 tmp_jdr = hadc->Instance->JDR3;
1152 case ADC_INJECTED_RANK_2:
1153 tmp_jdr = hadc->Instance->JDR2;
1155 case ADC_INJECTED_RANK_1:
1157 tmp_jdr = hadc->Instance->JDR1;
1254 HAL_StatusTypeDef tmp_hal_status;
1267 if (tmp_hal_status ==
HAL_OK)
1270 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1278 if (tmp_hal_status ==
HAL_OK)
1281 ADC_STATE_CLR_SET(hadc->State,
1282 HAL_ADC_STATE_INJ_BUSY,
1283 HAL_ADC_STATE_READY);
1290 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
1298 return tmp_hal_status;
1312 HAL_StatusTypeDef tmp_hal_status;
1325 if (tmp_hal_status ==
HAL_OK)
1328 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1331 __HAL_ADC_DISABLE_IT(hadc, (ADC_IT_EOC | ADC_IT_EOS | ADC_IT_OVR));
1338 if (tmp_hal_status ==
HAL_OK)
1341 ADC_STATE_CLR_SET(hadc->State,
1342 HAL_ADC_STATE_INJ_BUSY,
1343 HAL_ADC_STATE_READY);
1348 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
1356 return tmp_hal_status;
1372 HAL_StatusTypeDef tmp_hal_status;
1385 if (tmp_hal_status ==
HAL_OK)
1388 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1391 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_DMAEN);
1398 if (tmp_hal_status !=
HAL_OK)
1401 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
1405 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
1412 if (tmp_hal_status ==
HAL_OK)
1422 if (tmp_hal_status ==
HAL_OK)
1425 ADC_STATE_CLR_SET(hadc->State,
1426 HAL_ADC_STATE_INJ_BUSY,
1427 HAL_ADC_STATE_READY);
1432 SET_BIT(hadc->State, HAL_ADC_STATE_INJ_BUSY);
1440 return tmp_hal_status;
1443 #if defined(ADC_MULTIMODE_SUPPORT) 1459 HAL_StatusTypeDef tmp_hal_status;
1462 uint32_t tmphadcSlave_conversion_on_going;
1465 assert_param(IS_ADC_MULTIMODE_MASTER_INSTANCE(hadc->Instance));
1475 if (tmp_hal_status ==
HAL_OK)
1478 CLEAR_BIT(hadc->State, HAL_ADC_STATE_REG_BUSY);
1481 ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
1483 if (tmphadcSlave.Instance == NULL)
1486 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1502 || (tmphadcSlave_conversion_on_going == 1UL)
1505 if ((
HAL_GetTick() - tickstart) > ADC_STOP_CONVERSION_TIMEOUT)
1508 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
1526 if (tmp_hal_status !=
HAL_OK)
1529 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_DMA);
1533 __HAL_ADC_DISABLE_IT(hadc, ADC_IT_OVR);
1539 if (tmp_hal_status ==
HAL_OK)
1544 if (tmp_hal_status ==
HAL_OK)
1553 if (tmp_hal_status ==
HAL_OK)
1557 ADC_STATE_CLR_SET(hadc->State, HAL_ADC_STATE_INJ_BUSY, HAL_ADC_STATE_READY);
1571 return tmp_hal_status;
1633 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
1634 uint32_t tmpOffsetShifted;
1635 uint32_t tmp_config_internal_channel;
1636 uint32_t tmp_adc_is_conversion_on_going_regular;
1637 uint32_t tmp_adc_is_conversion_on_going_injected;
1638 __IO uint32_t wait_loop_index = 0;
1640 uint32_t tmp_JSQR_ContextQueueBeingBuilt = 0U;
1654 if (hadc->Init.ScanConvMode != ADC_SCAN_DISABLE)
1706 if ((hadc->Init.ScanConvMode == ADC_SCAN_DISABLE) ||
1716 if (sConfigInjected->
InjectedRank == ADC_INJECTED_RANK_1)
1725 tmp_JSQR_ContextQueueBeingBuilt = (ADC_JSQR_RK(sConfigInjected->
InjectedChannel, ADC_INJECTED_RANK_1)
1732 tmp_JSQR_ContextQueueBeingBuilt = (ADC_JSQR_RK(sConfigInjected->
InjectedChannel, ADC_INJECTED_RANK_1));
1735 MODIFY_REG(hadc->Instance->JSQR, ADC_JSQR_FIELDS, tmp_JSQR_ContextQueueBeingBuilt);
1737 hadc->InjectionConfig.ContextQueue = tmp_JSQR_ContextQueueBeingBuilt;
1753 if (hadc->InjectionConfig.ChannelCount == 0U)
1761 hadc->InjectionConfig.ContextQueue = 0x00000000U;
1790 tmp_JSQR_ContextQueueBeingBuilt &= ~ADC_JSQR_RK(ADC_SQR3_SQ10, sConfigInjected->
InjectedRank);
1796 hadc->InjectionConfig.ChannelCount--;
1801 hadc->InjectionConfig.ContextQueue |= tmp_JSQR_ContextQueueBeingBuilt;
1805 if (hadc->InjectionConfig.ChannelCount == 0U)
1807 MODIFY_REG(hadc->Instance->JSQR, ADC_JSQR_FIELDS, hadc->InjectionConfig.ContextQueue);
1824 ADC_CFGR_JQM | ADC_CFGR_JDISCEN,
1833 ADC_CFGR_JQM | ADC_CFGR_JDISCEN,
1849 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
1850 && (tmp_adc_is_conversion_on_going_injected == 0UL)
1860 SET_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO);
1864 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO);
1874 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
1876 tmp_hal_status = HAL_ERROR;
1880 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_JAUTO);
1890 assert_param(!(READ_BIT(hadc->Instance->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_TROVS) == (ADC_CFGR2_ROVSE | ADC_CFGR2_TROVS)));
1909 CLEAR_BIT(hadc->Instance->CFGR2, ADC_CFGR2_JOVSE);
1912 #if defined(ADC_SMPR1_SMPPLUS) 1939 tmpOffsetShifted = ADC_OFFSET_SHIFT_RESOLUTION(hadc, sConfigInjected->
InjectedOffset);
2003 && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_TEMPSENSOR) == 0UL))
2005 if (ADC_TEMPERATURE_SENSOR_INSTANCE(hadc))
2008 LL_ADC_PATH_INTERNAL_TEMPSENSOR | tmp_config_internal_channel);
2015 wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * (SystemCoreClock / (100000UL * 2UL)));
2016 while (wait_loop_index != 0UL)
2023 && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL))
2025 if (ADC_BATTERY_VOLTAGE_INSTANCE(hadc))
2028 LL_ADC_PATH_INTERNAL_VBAT | tmp_config_internal_channel);
2032 && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VREFINT) == 0UL))
2034 if (ADC_VREFINT_INSTANCE(hadc))
2037 LL_ADC_PATH_INTERNAL_VREFINT | tmp_config_internal_channel);
2050 return tmp_hal_status;
2053 #if defined(ADC_MULTIMODE_SUPPORT) 2072 HAL_StatusTypeDef tmp_hal_status =
HAL_OK;
2073 ADC_Common_TypeDef *tmpADC_Common;
2075 uint32_t tmphadcSlave_conversion_on_going;
2078 assert_param(IS_ADC_MULTIMODE_MASTER_INSTANCE(hadc->Instance));
2080 if (multimode->
Mode != ADC_MODE_INDEPENDENT)
2089 ADC_MULTI_SLAVE(hadc, &tmphadcSlave);
2091 if (tmphadcSlave.Instance == NULL)
2094 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
2109 && (tmphadcSlave_conversion_on_going == 0UL))
2112 tmpADC_Common = __LL_ADC_COMMON_INSTANCE(hadc->Instance);
2117 if (multimode->
Mode != ADC_MODE_INDEPENDENT)
2119 MODIFY_REG(tmpADC_Common->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG,
2121 ADC_CCR_MULTI_DMACONTREQ((uint32_t)hadc->Init.DMAContinuousRequests));
2133 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL)
2145 CLEAR_BIT(tmpADC_Common->CCR, ADC_CCR_MDMA | ADC_CCR_DMACFG);
2150 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->Instance)) == 0UL)
2152 CLEAR_BIT(tmpADC_Common->CCR, ADC_CCR_DUAL | ADC_CCR_DELAY);
2161 SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_CONFIG);
2163 tmp_hal_status = HAL_ERROR;
2170 return tmp_hal_status;
2185 HAL_StatusTypeDef tmp_hal_status;
2186 uint32_t tmp_adc_is_conversion_on_going_regular;
2187 uint32_t tmp_adc_is_conversion_on_going_injected;
2196 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
2197 && (tmp_adc_is_conversion_on_going_injected == 0UL)
2200 CLEAR_BIT(hadc->Instance->CFGR, ADC_CFGR_JQDIS);
2203 CLEAR_BIT(hadc->State, HAL_ADC_STATE_INJ_JQOVF);
2209 tmp_hal_status = HAL_ERROR;
2212 return tmp_hal_status;
2226 HAL_StatusTypeDef tmp_hal_status;
2227 uint32_t tmp_adc_is_conversion_on_going_regular;
2228 uint32_t tmp_adc_is_conversion_on_going_injected;
2237 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
2238 && (tmp_adc_is_conversion_on_going_injected == 0UL)
2246 tmp_hal_status = HAL_ERROR;
2249 return tmp_hal_status;
2263 HAL_StatusTypeDef tmp_hal_status;
2276 tmp_hal_status = HAL_ERROR;
2279 return tmp_hal_status;
2300 HAL_StatusTypeDef tmp_hal_status;
2313 tmp_hal_status = HAL_ERROR;
2316 return tmp_hal_status;
HAL_StatusTypeDef HAL_ADCEx_DisableInjectedQueue(ADC_HandleTypeDef *hadc)
Disable Injected Queue.
__STATIC_INLINE void LL_ADC_DisableInternalRegulator(ADC_TypeDef *ADCx)
Disable ADC internal voltage regulator.
HAL_StatusTypeDef HAL_ADCEx_Calibration_SetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff, uint32_t CalibrationFactor)
Set the calibration factor to overwrite automatic conversion result. ADC must be enabled and no conve...
__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group regular conversion trigger source internal (SW start) or external.
HAL_StatusTypeDef HAL_ADCEx_InjectedPollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
Wait for injected group conversion to be completed.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop_IT(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels, disable interruption of end-of-conversion. Disable ADC peripher...
__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx)
Get the selected ADC instance enable state.
void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 2 callback in non-blocking mode.
__STATIC_INLINE void LL_ADC_SetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff, uint32_t CalibrationFactor)
Set ADC calibration factor in the mode single-ended or differential (for devices with differential mo...
__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...
uint32_t TwoSamplingDelay
This file contains all the functions prototypes for the HAL module driver.
uint32_t HAL_ADCEx_Calibration_GetValue(ADC_HandleTypeDef *hadc, uint32_t SingleDiff)
Get the calibration factor.
HAL_StatusTypeDef HAL_ADCEx_RegularStop_DMA(ADC_HandleTypeDef *hadc)
Stop ADC conversion of regular group (and injected group in case of auto_injection mode)...
uint32_t HAL_ADCEx_InjectedGetValue(ADC_HandleTypeDef *hadc, uint32_t InjectedRank)
Get ADC injected group conversion result.
HAL_StatusTypeDef HAL_ADCEx_InjectedStop(ADC_HandleTypeDef *hadc)
Stop conversion of injected channels. Disable ADC peripheral if no regular conversion is on going...
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.
HAL_StatusTypeDef HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef *hadc, uint32_t SingleDiff)
Perform an ADC automatic self-calibration Calibration prerequisite: ADC must be disabled (execute thi...
void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
__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...
HAL_StatusTypeDef HAL_ADCEx_InjectedStart(ADC_HandleTypeDef *hadc)
Enable ADC, start conversion of injected group.
HAL_StatusTypeDef HAL_ADCEx_EnableInjectedQueue(ADC_HandleTypeDef *hadc)
Enable Injected Queue.
uint32_t ExternalTrigInjecConvEdge
uint32_t HAL_GetTick(void)
Provide a tick value in millisecond.
void ADC_DMAError(DMA_HandleTypeDef *hdma)
DMA error callback.
__STATIC_INLINE void LL_ADC_REG_StartConversion(ADC_TypeDef *ADCx)
Start ADC group regular conversion.
HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef *hadc)
Enable the selected ADC.
HAL_StatusTypeDef HAL_ADCEx_MultiModeStart_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
Enable ADC, start MultiMode conversion and transfer regular results through DMA.
void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef *hadc)
Injected context queue overflow callback.
uint32_t InjectedSamplingTime
uint32_t InjectedSingleDiff
uint32_t InjectedOffsetNumber
__STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx)
Get ADC group injected conversion trigger: independent or from ADC group regular. CFGR JAUTO LL_ADC_...
HAL_StatusTypeDef HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef *hadc)
Enable ADC, start conversion of injected group with interruption.
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.
HAL_StatusTypeDef HAL_ADCEx_RegularMultiModeStop_DMA(ADC_HandleTypeDef *hadc)
Stop DMA-based multimode ADC conversion, disable ADC DMA transfer, disable ADC peripheral if no injec...
__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)
struct __ADC_HandleTypeDef else typedef struct endif ADC_HandleTypeDef
ADC handle Structure definition.
FunctionalState AutoInjectedConv
HAL_StatusTypeDef HAL_ADCEx_EnterADCDeepPowerDownMode(ADC_HandleTypeDef *hadc)
Enter ADC deep-power-down mode.
__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 ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma)
DMA half transfer complete callback.
__STATIC_INLINE void LL_ADC_EnableDeepPowerDown(ADC_TypeDef *ADCx)
Put ADC instance in deep power down state.
FunctionalState InjectedDiscontinuousConvMode
uint32_t InjectedNbrOfConversion
__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.
HAL_StatusTypeDef HAL_ADCEx_InjectedConfigChannel(ADC_HandleTypeDef *hadc, ADC_InjectionConfTypeDef *sConfigInjected)
Configure a channel to be assigned to ADC group injected.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
Abort the DMA Transfer.
__STATIC_INLINE void LL_ADC_INJ_SetQueueMode(ADC_TypeDef *ADCx, uint32_t QueueMode)
Set ADC group injected contexts queue mode.
ADC_InjOversamplingTypeDef InjecOversampling
__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 uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx)
Get ADC calibration state. CR ADCAL LL_ADC_IsCalibrationOnGoing.
HAL_StatusTypeDef HAL_ADCEx_MultiModeConfigChannel(ADC_HandleTypeDef *hadc, ADC_MultiModeTypeDef *multimode)
Enable ADC multimode and configure multimode parameters.
FunctionalState QueueInjectedContext
void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc)
Analog watchdog 3 callback in non-blocking mode.
HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef *hadc, uint32_t ConversionGroup)
Stop ADC conversion.
__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx)
Get ADC group injected conversion trigger source internal (SW start) or external. ...
Structure definition of ADC multimode.
HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef *hadc)
Disable the selected ADC.
__STATIC_INLINE uint32_t LL_ADC_GetCalibrationFactor(ADC_TypeDef *ADCx, uint32_t SingleDiff)
Get ADC calibration factor in the mode single-ended or differential (for devices with differential mo...
__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)
FunctionalState InjecOversamplingMode
HAL_StatusTypeDef HAL_ADCEx_DisableVoltageRegulator(ADC_HandleTypeDef *hadc)
Disable ADC voltage regulator.
HAL_StatusTypeDef HAL_ADCEx_RegularStop_IT(ADC_HandleTypeDef *hadc)
Stop ADC conversion of ADC groups regular and injected, disable interrution of end-of-conversion, disable ADC peripheral if no conversion is on going on injected group.
HAL_StatusTypeDef HAL_ADCEx_RegularStop(ADC_HandleTypeDef *hadc)
Stop ADC conversion of regular group (and injected channels in case of auto_injection mode)...
uint32_t HAL_ADCEx_MultiModeGetValue(ADC_HandleTypeDef *hadc)
Return the last ADC Master and Slave regular conversions results when in multimode configuration...
__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, ...).
HAL_StatusTypeDef HAL_ADCEx_MultiModeStop_DMA(ADC_HandleTypeDef *hadc)
Stop multimode ADC conversion, disable ADC DMA transfer, disable ADC peripheral.
__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...
Structure definition of ADC group injected and ADC channel affected to ADC group injected.
__STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx, uint32_t SingleDiff)
Start ADC calibration in the mode single-ended or differential (for devices with differential mode av...
assert_param(IS_RTC_WAKEUP_CLOCK(WakeUpClock))
uint32_t ExternalTrigInjecConv
__STATIC_INLINE void LL_ADC_INJ_StartConversion(ADC_TypeDef *ADCx)
Start ADC group injected conversion.