309#ifdef HAL_ADC_MODULE_ENABLED
317#define ADC_CFGR_FIELDS_1 ((uint32_t)(ADC_CFGR_RES |\
318 ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
319 ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM |\
320 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL))
323#if defined(ADC_VER_V5_V90)
324#define ADC3_CFGR_FIELDS_1 ((ADC3_CFGR_RES | ADC3_CFGR_ALIGN |\
325 ADC_CFGR_CONT | ADC_CFGR_OVRMOD |\
326 ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM |\
327 ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL))
331#define ADC_CFGR2_FIELDS ((uint32_t)(ADC_CFGR2_ROVSE | ADC_CFGR2_OVSR |\
332 ADC_CFGR2_OVSS | ADC_CFGR2_TROVS |\
340#define ADC_ENABLE_TIMEOUT (2UL)
341#define ADC_DISABLE_TIMEOUT (2UL)
350#define ADC_CONVERSION_TIME_MAX_CPU_CYCLES (210688UL)
411 uint32_t tmp_adc_reg_is_conversion_on_going;
412 __IO uint32_t wait_loop_index = 0UL;
413 uint32_t tmp_adc_is_conversion_on_going_regular;
414 uint32_t tmp_adc_is_conversion_on_going_injected;
454#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
466 if (hadc->MspInitCallback ==
NULL)
472 hadc->MspInitCallback(hadc);
486 if (LL_ADC_IsDeepPowerDownEnabled(hadc->
Instance) != 0UL)
489 LL_ADC_DisableDeepPowerDown(hadc->
Instance);
496 if (LL_ADC_IsInternalRegulatorEnabled(hadc->
Instance) == 0UL)
499 LL_ADC_EnableInternalRegulator(hadc->
Instance);
504 wait_loop_index = ((LL_ADC_DELAY_INTERNAL_REGUL_STAB_US / 10UL) * ((
SystemCoreClock / (100000UL * 2UL)) + 1UL));
505 while (wait_loop_index != 0UL)
514 if (LL_ADC_IsInternalRegulatorEnabled(hadc->
Instance) == 0UL)
529 tmp_adc_reg_is_conversion_on_going = LL_ADC_REG_IsConversionOngoing(hadc->
Instance);
532 && (tmp_adc_reg_is_conversion_on_going == 0UL)
545 if (LL_ADC_IsEnabled(hadc->
Instance) == 0UL)
547 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->
Instance)) == 0UL)
578#if defined(ADC_VER_V5_3)
585#elif defined(ADC_VER_V5_V90)
590 hadc->
Init.DataAlign |
641#if defined(ADC_VER_V5_V90)
665 tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->
Instance);
666 tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->
Instance);
667 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
668 && (tmp_adc_is_conversion_on_going_injected == 0UL)
671#if defined(ADC_VER_V5_V90)
676 ADC3_CFGR_DMACONTREQ((uint32_t)hadc->
Init.DMAContinuousRequests));
694#if defined(ADC_VER_V5_V90)
717#if defined(ADC_VER_V5_V90)
777#if defined(ADC_VER_V5_V90)
821 return tmp_hal_status;
870 if (tmp_hal_status ==
HAL_OK)
876 if (tmp_hal_status ==
HAL_OK)
933#if defined(ADC_VER_V5_V90)
1009#if defined(ADC_VER_V5_V90)
1038 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->
Instance)) == 0UL)
1058#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1059 if (hadc->MspDeInitCallback ==
NULL)
1065 hadc->MspDeInitCallback(hadc);
1087 return tmp_hal_status;
1122#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
1148 if (pCallback ==
NULL)
1151 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1160 case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
1161 hadc->ConvCpltCallback = pCallback;
1164 case HAL_ADC_CONVERSION_HALF_CB_ID :
1165 hadc->ConvHalfCpltCallback = pCallback;
1168 case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
1169 hadc->LevelOutOfWindowCallback = pCallback;
1172 case HAL_ADC_ERROR_CB_ID :
1173 hadc->ErrorCallback = pCallback;
1176 case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
1177 hadc->InjectedConvCpltCallback = pCallback;
1180 case HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID :
1181 hadc->InjectedQueueOverflowCallback = pCallback;
1184 case HAL_ADC_LEVEL_OUT_OF_WINDOW_2_CB_ID :
1185 hadc->LevelOutOfWindow2Callback = pCallback;
1188 case HAL_ADC_LEVEL_OUT_OF_WINDOW_3_CB_ID :
1189 hadc->LevelOutOfWindow3Callback = pCallback;
1192 case HAL_ADC_END_OF_SAMPLING_CB_ID :
1193 hadc->EndOfSamplingCallback = pCallback;
1196 case HAL_ADC_MSPINIT_CB_ID :
1197 hadc->MspInitCallback = pCallback;
1200 case HAL_ADC_MSPDEINIT_CB_ID :
1201 hadc->MspDeInitCallback = pCallback;
1206 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1217 case HAL_ADC_MSPINIT_CB_ID :
1218 hadc->MspInitCallback = pCallback;
1221 case HAL_ADC_MSPDEINIT_CB_ID :
1222 hadc->MspDeInitCallback = pCallback;
1227 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1237 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1274 case HAL_ADC_CONVERSION_COMPLETE_CB_ID :
1278 case HAL_ADC_CONVERSION_HALF_CB_ID :
1282 case HAL_ADC_LEVEL_OUT_OF_WINDOW_1_CB_ID :
1286 case HAL_ADC_ERROR_CB_ID :
1290 case HAL_ADC_INJ_CONVERSION_COMPLETE_CB_ID :
1294 case HAL_ADC_INJ_QUEUE_OVEFLOW_CB_ID :
1298 case HAL_ADC_LEVEL_OUT_OF_WINDOW_2_CB_ID :
1302 case HAL_ADC_LEVEL_OUT_OF_WINDOW_3_CB_ID :
1306 case HAL_ADC_END_OF_SAMPLING_CB_ID :
1310 case HAL_ADC_MSPINIT_CB_ID :
1314 case HAL_ADC_MSPDEINIT_CB_ID :
1320 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1331 case HAL_ADC_MSPINIT_CB_ID :
1335 case HAL_ADC_MSPDEINIT_CB_ID :
1341 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1351 hadc->
ErrorCode |= HAL_ADC_ERROR_INVALID_CALLBACK;
1401 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
1407 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) == 0UL)
1416 if (tmp_hal_status ==
HAL_OK)
1429 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1466 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1467 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1468 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1478 LL_ADC_REG_StartConversion(hadc->
Instance);
1486 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->
Instance);
1506 return tmp_hal_status;
1532 if (tmp_hal_status ==
HAL_OK)
1538 if (tmp_hal_status ==
HAL_OK)
1551 return tmp_hal_status;
1575 uint32_t tmp_Flag_End;
1578 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
1597 if ((tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1598 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1599 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1616 if (LL_ADC_GetMultiDMATransfer(__LL_ADC_COMMON_INSTANCE(hadc->
Instance)) != LL_ADC_MULTI_REG_DMA_EACH_ADC)
1632 while ((hadc->
Instance->
ISR & tmp_Flag_End) == 0UL)
1637 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
1659 if ((LL_ADC_REG_IsTriggerSourceSWStart(hadc->
Instance) != 0UL)
1680 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1681 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1682 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
1691 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->
Instance);
1752 if (((
HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0UL))
1888 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
1894 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) == 0UL)
1903 if (tmp_hal_status ==
HAL_OK)
1916 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1977 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
1978 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
1979 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
2006 LL_ADC_REG_StartConversion(hadc->
Instance);
2014 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->
Instance);
2049 return tmp_hal_status;
2073 if (tmp_hal_status ==
HAL_OK)
2083 if (tmp_hal_status ==
HAL_OK)
2096 return tmp_hal_status;
2115 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
2121 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) == 0UL)
2128 if ((tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2129 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
2130 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
2137 if (tmp_hal_status ==
HAL_OK)
2150 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2197#if defined(ADC_VER_V5_V90)
2200 LL_ADC_REG_SetDMATransferMode(hadc->
Instance, ADC3_CFGR_DMACONTREQ((uint32_t)hadc->
Init.DMAContinuousRequests));
2201 LL_ADC_EnableDMAReq(hadc->
Instance);
2221 LL_ADC_REG_StartConversion(hadc->
Instance);
2243 return tmp_hal_status;
2273 if (tmp_hal_status ==
HAL_OK)
2285 if (tmp_hal_status !=
HAL_OK)
2298 if (tmp_hal_status ==
HAL_OK)
2308 if (tmp_hal_status ==
HAL_OK)
2322 return tmp_hal_status;
2363 uint32_t overrun_error = 0UL;
2366 uint32_t tmp_adc_inj_is_trigger_source_sw_start;
2367 uint32_t tmp_adc_reg_is_trigger_source_sw_start;
2370 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
2387#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2388 hadc->EndOfSamplingCallback(hadc);
2411 if (LL_ADC_REG_IsTriggerSourceSWStart(hadc->
Instance) != 0UL)
2417 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2418 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_SIMULT)
2419 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_INJ_ALTERN)
2428 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->
Instance);
2440 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) == 0UL)
2473#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2474 hadc->ConvCpltCallback(hadc);
2499 tmp_adc_inj_is_trigger_source_sw_start = LL_ADC_INJ_IsTriggerSourceSWStart(hadc->
Instance);
2500 tmp_adc_reg_is_trigger_source_sw_start = LL_ADC_REG_IsTriggerSourceSWStart(hadc->
Instance);
2505 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
2506 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_SIMULT)
2507 || (tmp_multimode_config == LL_ADC_MULTI_DUAL_REG_INTERL)
2514 tmpADC_Master = __LL_ADC_MULTI_INSTANCE_MASTER(hadc->
Instance);
2523 if (tmp_adc_inj_is_trigger_source_sw_start != 0UL)
2526 ((tmp_adc_reg_is_trigger_source_sw_start != 0UL) &&
2542 if (LL_ADC_INJ_IsConversionOngoing(hadc->
Instance) == 0UL)
2574#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2575 hadc->InjectedConvCpltCallback(hadc);
2591#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2592 hadc->LevelOutOfWindowCallback(hadc);
2608#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2609 hadc->LevelOutOfWindow2Callback(hadc);
2625#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2626 hadc->LevelOutOfWindow3Callback(hadc);
2646 overrun_error = 1UL;
2651 if (tmp_multimode_config != LL_ADC_MULTI_INDEPENDENT)
2655 if (LL_ADC_GetMultiDMATransfer(__LL_ADC_COMMON_INSTANCE(hadc->
Instance)) != LL_ADC_MULTI_REG_DMA_EACH_ADC)
2657 overrun_error = 1UL;
2665 overrun_error = 1UL;
2670 if (overrun_error == 1UL)
2683#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2684 hadc->ErrorCallback(hadc);
2707#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
2708 hadc->InjectedQueueOverflowCallback(hadc);
2822 uint32_t tmpOffsetShifted;
2823 uint32_t tmp_config_internal_channel;
2824 __IO uint32_t wait_loop_index = 0;
2825 uint32_t tmp_adc_is_conversion_on_going_regular;
2826 uint32_t tmp_adc_is_conversion_on_going_injected;
2841#if defined(ADC_VER_V5_V90)
2893 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) == 0UL)
2895 if (!(__LL_ADC_IS_CHANNEL_INTERNAL(sConfig->
Channel)))
2897#if defined(ADC_VER_V5_V90)
2905 hadc->
Instance->PCSEL |= (1UL << (__LL_ADC_CHANNEL_TO_DECIMAL_NB((uint32_t)sConfig->
Channel) & 0x1FUL));
2917 tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->
Instance);
2918 tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->
Instance);
2919 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
2920 && (tmp_adc_is_conversion_on_going_injected == 0UL)
2930#if defined(ADC_VER_V5_V90)
2933 tmpOffsetShifted = ADC3_OFFSET_SHIFT_RESOLUTION(hadc, (uint32_t)sConfig->
Offset);
2946#if defined(ADC_VER_V5_V90)
2949 assert_param(IS_ADC3_OFFSET_SIGN(sConfig->OffsetSign));
2953 LL_ADC_SetOffsetSaturation(hadc->
Instance, sConfig->
OffsetNumber, (sConfig->OffsetSaturation ==
ENABLE) ? LL_ADC_OFFSET_SATURATION_ENABLE : LL_ADC_OFFSET_SATURATION_DISABLE);
2973#if defined(ADC_VER_V5_V90)
2976 if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->
Instance, LL_ADC_OFFSET_1)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfig->
Channel))
2978 LL_ADC_SetOffsetState(hadc->
Instance, LL_ADC_OFFSET_1, LL_ADC_OFFSET_DISABLE);
2980 if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->
Instance, LL_ADC_OFFSET_2)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfig->
Channel))
2982 LL_ADC_SetOffsetState(hadc->
Instance, LL_ADC_OFFSET_2, LL_ADC_OFFSET_DISABLE);
2984 if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->
Instance, LL_ADC_OFFSET_3)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfig->
Channel))
2986 LL_ADC_SetOffsetState(hadc->
Instance, LL_ADC_OFFSET_3, LL_ADC_OFFSET_DISABLE);
2988 if (__LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_GetOffsetChannel(hadc->
Instance, LL_ADC_OFFSET_4)) == __LL_ADC_CHANNEL_TO_DECIMAL_NB(sConfig->
Channel))
2990 LL_ADC_SetOffsetState(hadc->
Instance, LL_ADC_OFFSET_4, LL_ADC_OFFSET_DISABLE);
3021 if (LL_ADC_IsEnabled(hadc->
Instance) == 0UL)
3039 if (__LL_ADC_IS_CHANNEL_INTERNAL(sConfig->
Channel))
3043 tmp_config_internal_channel = LL_ADC_GetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
3047 if (__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__LL_ADC_COMMON_INSTANCE(hadc->
Instance)) == 0UL)
3055 LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->
Instance), LL_ADC_PATH_INTERNAL_TEMPSENSOR | tmp_config_internal_channel);
3062 wait_loop_index = ((LL_ADC_DELAY_TEMPSENSOR_STAB_US / 10UL) * ((
SystemCoreClock / (100000UL * 2UL)) + 1UL));
3063 while (wait_loop_index != 0UL)
3069 else if ((sConfig->
Channel ==
ADC_CHANNEL_VBAT) && ((tmp_config_internal_channel & LL_ADC_PATH_INTERNAL_VBAT) == 0UL))
3073 LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->
Instance), LL_ADC_PATH_INTERNAL_VBAT | tmp_config_internal_channel);
3080 LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(hadc->
Instance), LL_ADC_PATH_INTERNAL_VREFINT | tmp_config_internal_channel);
3117 return tmp_hal_status;
3139 uint32_t tmpAWDHighThresholdShifted;
3140 uint32_t tmpAWDLowThresholdShifted;
3141 uint32_t tmp_adc_is_conversion_on_going_regular;
3142 uint32_t tmp_adc_is_conversion_on_going_injected;
3157#if defined(ADC_VER_V5_V90)
3203 tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->
Instance);
3204 tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->
Instance);
3205 if ((tmp_adc_is_conversion_on_going_regular == 0UL)
3206 && (tmp_adc_is_conversion_on_going_injected == 0UL)
3218 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, __LL_ADC_ANALOGWD_CHANNEL_GROUP(AnalogWDGConfig->
Channel,
3219 LL_ADC_GROUP_REGULAR));
3223 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, __LL_ADC_ANALOGWD_CHANNEL_GROUP(AnalogWDGConfig->
Channel,
3224 LL_ADC_GROUP_INJECTED));
3228 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, __LL_ADC_ANALOGWD_CHANNEL_GROUP(AnalogWDGConfig->
Channel,
3229 LL_ADC_GROUP_REGULAR_INJECTED));
3233 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, LL_ADC_AWD_ALL_CHANNELS_REG);
3237 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, LL_ADC_AWD_ALL_CHANNELS_INJ);
3241 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, LL_ADC_AWD_ALL_CHANNELS_REG_INJ);
3245 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, LL_ADC_AWD1, LL_ADC_AWD_DISABLE);
3256#if defined(ADC_VER_V5_V90)
3261 AnalogWDGConfig->FilteringConfig);
3283 LL_ADC_ClearFlag_AWD1(hadc->
Instance);
3288 LL_ADC_EnableIT_AWD1(hadc->
Instance);
3292 LL_ADC_DisableIT_AWD1(hadc->
Instance);
3319#if defined(ADC_VER_V5_V90)
3323 LL_ADC_SetAnalogWDMonitChannels(hadc->
Instance, AnalogWDGConfig->
WatchdogNumber, LL_ADC_AWD_ALL_CHANNELS_REG_INJ);
3339#if defined(ADC_VER_V5_V90)
3354#if defined(ADC_VER_V5_V90)
3369 LL_ADC_ConfigAnalogWDThresholds(hadc->
Instance, AnalogWDGConfig->
WatchdogNumber, tmpAWDHighThresholdShifted, tmpAWDLowThresholdShifted);
3413 LL_ADC_ClearFlag_AWD2(hadc->
Instance);
3418 LL_ADC_EnableIT_AWD2(hadc->
Instance);
3422 LL_ADC_DisableIT_AWD2(hadc->
Instance);
3435 LL_ADC_ClearFlag_AWD3(hadc->
Instance);
3440 LL_ADC_EnableIT_AWD3(hadc->
Instance);
3444 LL_ADC_DisableIT_AWD3(hadc->
Instance);
3463 return tmp_hal_status;
3545 uint32_t Conversion_Timeout_CPU_cycles = 0UL;
3546 uint32_t conversion_group_reassigned = ConversionGroup;
3547 uint32_t tmp_ADC_CR_ADSTART_JADSTART;
3548 uint32_t tmp_adc_is_conversion_on_going_regular;
3549 uint32_t tmp_adc_is_conversion_on_going_injected;
3557 tmp_adc_is_conversion_on_going_regular = LL_ADC_REG_IsConversionOngoing(hadc->
Instance);
3558 tmp_adc_is_conversion_on_going_injected = LL_ADC_INJ_IsConversionOngoing(hadc->
Instance);
3559 if ((tmp_adc_is_conversion_on_going_regular != 0UL)
3560 || (tmp_adc_is_conversion_on_going_injected != 0UL)
3580 if (Conversion_Timeout_CPU_cycles >= (ADC_CONVERSION_TIME_MAX_CPU_CYCLES * 4UL))
3590 Conversion_Timeout_CPU_cycles ++;
3601 if (LL_ADC_REG_IsConversionOngoing(hadc->
Instance) != 0UL)
3603 if (LL_ADC_IsDisableOngoing(hadc->
Instance) == 0UL)
3606 LL_ADC_REG_StopConversion(hadc->
Instance);
3615 if (LL_ADC_INJ_IsConversionOngoing(hadc->
Instance) != 0UL)
3617 if (LL_ADC_IsDisableOngoing(hadc->
Instance) == 0UL)
3620 LL_ADC_INJ_StopConversion(hadc->
Instance);
3626 switch (conversion_group_reassigned)
3643 while ((hadc->
Instance->
CR & tmp_ADC_CR_ADSTART_JADSTART) != 0UL)
3648 if((hadc->
Instance->
CR & tmp_ADC_CR_ADSTART_JADSTART) != 0UL)
3684 if (LL_ADC_IsEnabled(hadc->
Instance) == 0UL)
3706 uint32_t tmp_multimode_config = LL_ADC_GetMultimode(__LL_ADC_COMMON_INSTANCE(hadc->
Instance));
3708 || (tmp_multimode_config == LL_ADC_MULTI_INDEPENDENT)
3721 if (LL_ADC_IsEnabled(hadc->
Instance) == 0UL)
3726 if ((
HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT)
3758 const uint32_t tmp_adc_is_disable_on_going = LL_ADC_IsDisableOngoing(hadc->
Instance);
3763 if ((LL_ADC_IsEnabled(hadc->
Instance) != 0UL)
3764 && (tmp_adc_is_disable_on_going == 0UL)
3791 if ((
HAL_GetTick() - tickstart) > ADC_DISABLE_TIMEOUT)
3835 if (LL_ADC_REG_IsTriggerSourceSWStart(hadc->
Instance) != 0UL)
3865#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
3866 hadc->ConvCpltCallback(hadc);
3876#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
3877 hadc->ErrorCallback(hadc);
3901#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
3902 hadc->ConvHalfCpltCallback(hadc);
3925#if (USE_HAL_ADC_REGISTER_CALLBACKS == 1)
3926 hadc->ErrorCallback(hadc);
3991#if defined(ADC_VER_V5_3) || defined(ADC_VER_V5_V90)
3993 if (freq <= 6250000UL)
3997 else if (freq <= 12500000UL)
4001 else if (freq <= 25000000UL)
4012 if (freq > 20000000UL)
4025 if (freq <= 6250000UL)
4029 else if (freq <= 12500000UL)
4033 else if (freq <= 25000000UL)
#define __IO
Defines 'read / write' permissions.
void HAL_ADCEx_InjectedQueueOverflowCallback(ADC_HandleTypeDef *hadc)
void HAL_ADCEx_EndOfSamplingCallback(ADC_HandleTypeDef *hadc)
void HAL_ADCEx_LevelOutOfWindow3Callback(ADC_HandleTypeDef *hadc)
void HAL_ADCEx_LevelOutOfWindow2Callback(ADC_HandleTypeDef *hadc)
void HAL_ADCEx_InjectedConvCpltCallback(ADC_HandleTypeDef *hadc)
#define ADC_VREFINT_INSTANCE(__HANDLE__)
Verify the ADC instance connected to the internal voltage reference VREFINT.
#define IS_ADC_OVERSAMPLING_RATIO(RATIO)
Verify the ADC oversampling ratio.
#define ADC_CHANNEL_DIFF_NEG_INPUT(__HANDLE__, __CHANNEL__)
Helper macro to determine the selected channel corresponding negative input on the ADC instance selec...
#define ADC_OFR_CHANNEL(__CHANNEL__)
Configure the channel number into offset OFRx register.
#define ADC_CFGR_AUTOWAIT(__AUTOWAIT__)
Configure the ADC auto delay mode.
#define IS_ADC3_DIFF_CHANNEL(__CHANNEL__)
Verify the ADC channel setting in differential mode for ADC3.
#define ADC_TEMPERATURE_SENSOR_INSTANCE(__HANDLE__)
Verify the ADC instance connected to the temperature sensor.
#define ADC_BATTERY_VOLTAGE_INSTANCE(__HANDLE__)
Verify the ADC instance connected to the battery voltage VBAT.
#define ADC_OFFSET_SHIFT_RESOLUTION(__HANDLE__, __OFFSET__)
Shift the offset in function of the selected ADC resolution.
#define IS_ADC_EVENT_TYPE(__EVENT__)
Verify the ADC event type.
#define ADC_CFGR_CONTINUOUS(__CONTINUOUS_MODE__)
Configure ADC continuous conversion mode.
#define ADC_CFGR_DISCONTINUOUS_NUM(__NBR_DISCONTINUOUS_CONV__)
Configure the number of discontinuous conversions for regular group.
#define ADC_AWD1THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__)
Shift the AWD1 threshold in function of the selected ADC resolution.
#define ADC_CFGR_DMACONTREQ(__DMACONTREQ_MODE__)
Enable the ADC DMA continuous request.
#define IS_ADC_ANALOG_WATCHDOG_MODE(__WATCHDOG_MODE__)
Verify the ADC analog watchdog mode setting.
#define ADC_CFGR_REG_DISCONTINUOUS(__REG_DISCONTINUOUS_MODE__)
Configure ADC discontinuous conversion mode for regular group.
#define IS_ADC_SINGLE_DIFFERENTIAL(__SING_DIFF__)
Verify the ADC single-ended input or differential mode setting.
#define IS_ADC_CONVERSION_GROUP(__CONVERSION__)
Verify the ADC conversion (regular or injected or both).
#define ADC_CLEAR_COMMON_CONTROL_REGISTER(__HANDLE__)
#define IS_ADC2_DIFF_CHANNEL(__CHANNEL__)
Verify the ADC channel setting in differential mode for ADC2.
#define IS_ADC_ANALOG_WATCHDOG_NUMBER(__WATCHDOG__)
Verify the ADC analog watchdog setting.
#define ADC_AWD23THRESHOLD_SHIFT_RESOLUTION(__HANDLE__, __THRESHOLD__)
Shift the AWD2 and AWD3 threshold in function of the selected ADC resolution.
#define IS_ADC_TRIGGERED_OVERSAMPLING_MODE(__MODE__)
Verify the ADC oversampling triggered mode.
#define IS_ADC1_DIFF_CHANNEL(__CHANNEL__)
Verify the ADC channel setting in differential mode for ADC1.
#define IS_ADC_OFFSET_NUMBER(__OFFSET_NUMBER__)
Verify the ADC offset management setting.
#define IS_ADC_RIGHT_BIT_SHIFT(__SHIFT__)
Verify the ADC oversampling shift.
#define IS_ADC_CHANNEL(__CHANNEL__)
Verify the ADC channel setting.
#define IS_ADC_REGOVERSAMPLING_MODE(__MODE__)
Verify the ADC oversampling regular conversion resumed or continued mode.
#define ADC_CFGR_FIELDS_2
#define ADC_EOC_SEQ_CONV
End of sequence conversions flag.
#define HAL_ADC_ERROR_OVR
Overrun error.
#define HAL_ADC_ERROR_INTERNAL
ADC peripheral internal error (problem of clocking, enable/disable, erroneous state,...
#define HAL_ADC_ERROR_JQOVF
Injected context queue overflow error.
#define HAL_ADC_ERROR_DMA
DMA transfer error.
#define ADC_AWD3_EVENT
ADC Analog watchdog 3 event (additional analog watchdog, not present on all STM32 series).
#define ADC_EOSMP_EVENT
ADC End of Sampling event.
#define ADC_JQOVF_EVENT
ADC Injected Context Queue Overflow event.
#define ADC_AWD2_EVENT
ADC Analog watchdog 2 event (additional analog watchdog, not present on all STM32 series).
#define ADC_AWD_EVENT
ADC Analog watchdog 1 event: Naming for compatibility with other STM32 devices having only one analog...
HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef *hadc)
void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
ADC MSP De-Initialization This function freeze the hardware resources used in this example.
void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
ADC MSP Initialization This function configures the hardware resources used in this example.
HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef *hadc, uint32_t EventType, uint32_t Timeout)
HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef *hadc)
void HAL_ADC_IRQHandler(ADC_HandleTypeDef *hadc)
uint32_t HAL_ADC_GetValue(const ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef *hadc, uint32_t *pData, uint32_t Length)
void HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef *hadc)
void HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef *hadc, uint32_t Timeout)
void HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef *hadc)
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef *hadc)
HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef *hadc, ADC_ChannelConfTypeDef *sConfig)
HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef *hadc, ADC_AnalogWDGConfTypeDef *AnalogWDGConfig)
uint32_t HAL_ADC_GetError(const ADC_HandleTypeDef *hadc)
uint32_t HAL_ADC_GetState(const ADC_HandleTypeDef *hadc)
#define ADC_ANALOGWATCHDOG_2
ADC analog watchdog number 2.
#define ADC_ANALOGWATCHDOG_1
ADC analog watchdog number 1.
#define ADC_DIFFERENTIAL_ENDED
ADC channel ending set to differential (literal also used to set calibration mode).
#define ADC_CHANNEL_VREFINT
ADC internal channel connected to VrefInt: Internal voltage reference, channel specific to ADC3.
#define ADC_CHANNEL_VBAT
ADC internal channel connected to Vbat/4: Vbat voltage through a divider ladder of factor 1/4 to have...
#define ADC_CHANNEL_TEMPSENSOR
ADC internal channel connected to Temperature sensor, channel specific to ADC3.
#define ADC_CLOCK_ASYNC_DIV10
ADC asynchronous clock with prescaler division by 10.
#define ADC_CLOCK_SYNC_PCLK_DIV4
ADC synchronous clock derived from AHB clock with prescaler division by 4.
#define ADC_CLOCK_ASYNC_DIV12
ADC asynchronous clock with prescaler division by 12.
#define ADC_CLOCK_ASYNC_DIV256
ADC asynchronous clock with prescaler division by 256.
#define ADC_CLOCK_ASYNC_DIV6
ADC asynchronous clock with prescaler division by 6.
#define ADC_CLOCK_ASYNC_DIV4
ADC asynchronous clock with prescaler division by 4.
#define ADC_CLOCK_SYNC_PCLK_DIV2
ADC synchronous clock derived from AHB clock with prescaler division by 2.
#define ADC_CLOCK_ASYNC_DIV8
ADC asynchronous clock with prescaler division by 8.
#define ADC_CLOCK_SYNC_PCLK_DIV1
ADC synchronous clock derived from AHB clock without prescaler.
#define ADC_CLOCK_ASYNC_DIV128
ADC asynchronous clock with prescaler division by 128.
#define ADC_CLOCK_ASYNC_DIV16
ADC asynchronous clock with prescaler division by 16.
#define ADC_CLOCK_ASYNC_DIV2
ADC asynchronous clock with prescaler division by 2.
#define ADC_CLOCK_ASYNC_DIV64
ADC asynchronous clock with prescaler division by 64.
#define ADC_CLOCK_ASYNC_DIV32
ADC asynchronous clock with prescaler division by 32.
#define ADC_REGULAR_INJECTED_GROUP
ADC both groups regular and injected.
#define ADC_REGULAR_GROUP
ADC group regular (available on all STM32 devices).
#define ADC_INJECTED_GROUP
ADC group injected (not available on all STM32 devices).
#define ADC_OFFSET_NONE
ADC offset disabled: no offset correction for the selected ADC channel.
#define ADC_TRIGGEREDMODE_SINGLE_TRIGGER
ADC oversampling discontinuous mode: continuous mode (all conversions of oversampling ratio are done ...
#define ADC_OVR_DATA_PRESERVED
ADC group regular behavior in case of overrun: data preserved.
#define ADC_RESOLUTION_8B
ADC resolution 8 bits.
#define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__)
Enable ADC interrupt.
#define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__)
Disable ADC interrupt.
#define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__)
Clear the specified ADC flag.
#define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__)
Check whether the specified ADC flag is set or not.
#define ADC_STOP_CONVERSION_TIMEOUT
ADC stop time-out value.
HAL_StatusTypeDef ADC_Enable(ADC_HandleTypeDef *hadc)
void ADC_DMAConvCplt(DMA_HandleTypeDef *hdma)
void ADC_DMAHalfConvCplt(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef ADC_ConversionStop(ADC_HandleTypeDef *hadc, uint32_t ConversionGroup)
void ADC_ConfigureBoostMode(ADC_HandleTypeDef *hadc)
void ADC_DMAError(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef ADC_Disable(ADC_HandleTypeDef *hadc)
#define IS_ADC_EXTTRIG(__REGTRIG__)
Verify the ADC regular conversions external trigger.
#define IS_ADC_REGULAR_RANK(__CHANNEL__)
Verify the ADC regular channel setting.
#define IS_ADC_RANGE(__RESOLUTION__, __ADC_VALUE__)
Verify that a given value is aligned with the ADC resolution range.
#define IS_ADC_REGULAR_NB_CONV(__LENGTH__)
Verify the length of the scheduled regular conversions group.
#define IS_ADC_REGULAR_DISCONT_NUMBER(NUMBER)
Verify the number of scheduled regular conversions in discontinuous mode.
#define IS_ADC_CLOCKPRESCALER(__ADC_CLOCK__)
Verify the ADC clock setting.
#define IS_ADC_EXTTRIG_EDGE(__EDGE__)
Verify the ADC edge trigger setting for regular group.
#define IS_ADC_OVERRUN(__OVR__)
Verify the ADC regular conversions overrun handling.
#define ADC_STATE_CLR_SET
Simultaneously clear and set specific bits of the handle State.
#define IS_ADC_SCAN_MODE(__SCAN_MODE__)
Verify the ADC scan mode.
#define ADC_CLEAR_ERRORCODE(__HANDLE__)
Clear ADC error code (set it to no error code "HAL_ADC_ERROR_NONE").
#define IS_ADC_SAMPLE_TIME(__TIME__)
Verify the ADC conversions sampling time.
#define IS_ADC_EOC_SELECTION(__EOC_SELECTION__)
Verify the ADC regular conversions check for converted data availability.
#define ADC_IS_SYNCHRONOUS_CLOCK_MODE(__HANDLE__)
Check if ADC clock mode is synchronous.
#define IS_ADC_CONVERSIONDATAMGT(DATA)
Verify the ADC data conversion setting.
#define ADC_GET_RESOLUTION(__HANDLE__)
Return resolution bits in CFGR register RES[1:0] field.
#define IS_ADC_RESOLUTION(__RESOLUTION__)
Verify the ADC resolution setting.
#define ADC_SCAN_ENABLE
Scan mode enabled.
#define ADC_SCAN_DISABLE
Scan mode disabled.
#define HAL_ADC_STATE_INJ_BUSY
A conversion on ADC group injected is ongoing or can occur (either by auto-injection mode,...
#define HAL_ADC_STATE_INJ_JQOVF
Injected queue overflow occurrence.
#define HAL_ADC_STATE_REG_OVR
Overrun occurrence.
#define HAL_ADC_STATE_ERROR_CONFIG
Configuration error occurrence.
#define HAL_ADC_STATE_MULTIMODE_SLAVE
ADC in multimode slave state, controlled by another ADC master (when feature available).
#define HAL_ADC_STATE_REG_EOSMP
Not available on this STM32 series: End Of Sampling flag raised.
#define HAL_ADC_STATE_AWD1
Out-of-window occurrence of ADC analog watchdog 1.
#define HAL_ADC_STATE_RESET
HAL ADC state machine: ADC states definition (bitfields).
#define HAL_ADC_STATE_REG_BUSY
A conversion on ADC group regular is ongoing or can occur (either by continuous mode,...
#define HAL_ADC_STATE_ERROR_DMA
DMA error occurrence.
#define HAL_ADC_STATE_ERROR_INTERNAL
Internal error occurrence.
#define HAL_ADC_STATE_BUSY_INTERNAL
ADC is busy due to an internal process (initialization, calibration).
#define HAL_ADC_STATE_AWD3
Out-of-window occurrence of ADC analog watchdog 3.
#define HAL_ADC_STATE_TIMEOUT
TimeOut occurrence.
#define HAL_ADC_STATE_READY
ADC peripheral ready for use.
#define HAL_ADC_STATE_REG_EOC
Conversion data available on group regular.
#define HAL_ADC_STATE_AWD2
Out-of-window occurrence of ADC analog watchdog 2.
#define HAL_ADC_STATE_INJ_EOC
Conversion data available on group injected.
#define ADC_ANALOGWATCHDOG_SINGLE_INJEC
Analog watchdog applied to an injected group single channel.
#define ADC_ANALOGWATCHDOG_ALL_REGINJEC
Analog watchdog applied to regular and injected groups all channels.
#define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC
Analog watchdog applied to a regular and injected groups single channel.
#define ADC_ANALOGWATCHDOG_ALL_INJEC
Analog watchdog applied to injected group all channels.
#define ADC_ANALOGWATCHDOG_SINGLE_REG
Analog watchdog applied to a regular group single channel.
#define ADC_ANALOGWATCHDOG_ALL_REG
Analog watchdog applied to regular group all channels.
#define ADC_FLAG_AWD2
ADC Analog watchdog 2 flag (additional analog watchdog).
#define ADC_FLAG_JEOC
ADC End of Injected Conversion flag.
#define ADC_FLAG_JQOVF
ADC Injected Context Queue Overflow flag.
#define ADC_FLAG_OVR
ADC overrun flag.
#define ADC_FLAG_AWD1
ADC Analog watchdog 1 flag (main analog watchdog).
#define ADC_FLAG_EOS
ADC End of Regular sequence of Conversions flag.
#define ADC_FLAG_EOSMP
ADC End of Sampling flag.
#define ADC_FLAG_JEOS
ADC End of Injected sequence of Conversions flag.
#define ADC_FLAG_AWD3
ADC Analog watchdog 3 flag (additional analog watchdog).
#define ADC_FLAG_RDY
ADC Ready flag.
#define ADC_FLAG_EOC
ADC End of Regular Conversion flag.
#define ADC_IT_EOC
ADC End of regular conversion interrupt source.
#define ADC_IT_EOSMP
ADC End of sampling interrupt source.
#define ADC_IT_JEOS
ADC End of injected sequence of conversions interrupt source.
#define ADC_IT_AWD1
ADC Analog watchdog 1 interrupt source (main analog watchdog).
#define ADC_IT_OVR
ADC overrun interrupt source.
#define ADC_IT_AWD2
ADC Analog watchdog 2 interrupt source (additional analog watchdog).
#define ADC_IT_JQOVF
ADC Injected Context Queue Overflow interrupt source.
#define ADC_IT_JEOC
ADC End of injected conversion interrupt source.
#define ADC_IT_RDY
ADC Ready interrupt source.
#define ADC_IT_AWD3
ADC Analog watchdog 3 interrupt source (additional analog watchdog).
#define ADC_IT_EOS
ADC End of regular sequence of conversions interrupt source.
#define ADC_EXTERNALTRIGCONVEDGE_NONE
Regular conversions hardware trigger detection disabled.
#define ADC_SOFTWARE_START
ADC group regular conversion trigger internal: SW start.
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma)
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength)
struct __DMA_HandleTypeDef DMA_HandleTypeDef
DMA handle Structure definition.
@ HAL_DMA_STATE_BUSY
DMA process is ongoing.
#define CLEAR_BIT(REG, BIT)
#define IS_ADC_ALL_INSTANCE(INSTANCE)
#define SET_BIT(REG, BIT)
#define MODIFY_REG(REG, CLEARMASK, SETMASK)
#define READ_BIT(REG, BIT)
#define IS_FUNCTIONAL_STATE(STATE)
uint32_t HAL_GetREVID(void)
Returns the device revision identifier.
uint32_t HAL_GetTick(void)
Provides a tick value in millisecond.
#define ADC_CCR_CKMODE_Pos
#define ADC_CFGR_DMNGT_1
0x00000002
#define ADC_CALFACT_CALFACT_S
ADC calibration factors in single-ended mode.
#define ADC_CFGR_JAUTO
ADC Automatic injected group conversion.
#define ADC_OFR1_OFFSET1_CH
ADC Channel selection for the data offset 1.
#define ADC_OFR2_OFFSET2
ADC data offset 2 for channel programmed into bits OFFSET2_CH[4:0].
#define ADC_SQR3_SQ13
ADC 13th conversion in regular sequence.
#define ADC_OFR2_SSATE
ADC Signed saturation Enable.
#define ADC_SQR4_SQ16
ADC 16th conversion in regular sequence.
#define ADC_CFGR_DISCEN
ADC Discontinuous mode for regular channels.
#define ADC_SQR4_SQ15
ADC 15th conversion in regular sequence.
#define ADC_CR_ADSTART
ADC Start of Regular conversion.
#define ADC_CR_ADEN
ADC Enable control.
#define ADC_CR_JADSTART
ADC Start of injected conversion.
#define ADC_SQR1_SQ4
ADC 4th conversion in regular sequence.
#define ADC_SQR3_SQ10
ADC 10th conversion in regular sequence.
#define ADC_SQR2_SQ8
ADC 8th conversion in regular sequence.
#define ADC_AWD3CR_AWD3CH
ADC Analog watchdog 2 channel selection.
#define ADC_SMPR2_SMP18
ADC Channel 18 Sampling time selection.
#define ADC_SQR3_SQ12
ADC 12th conversion in regular sequence.
#define ADC_CFGR2_LSHIFT
ADC Left shift factor.
#define ADC_SMPR2_SMP13
ADC Channel 13 Sampling time selection.
#define ADC_OFR3_SSATE
ADC Signed saturation Enable.
#define ADC_CFGR2_TROVS
ADC Triggered regular Oversampling.
#define ADC_SMPR2_SMP12
ADC Channel 12 Sampling time selection.
#define ADC3_CFGR2_BULB
ADC Bulb sampling mode.
#define ADC_OFR4_OFFSET4
ADC data offset 4 for channel programmed into bits OFFSET4_CH[4:0].
#define ADC_SMPR2_SMP10
ADC Channel 10 Sampling time selection.
#define ADC3_TR1_AWDFILT
ADC analog watchdog filtering parameter.
#define ADC_CFGR_DISCNUM
ADC Discontinuous mode channel count.
#define ADC_SMPR2_SMP11
ADC Channel 11 Sampling time selection.
#define ADC_DIFSEL_DIFSEL
ADC differential modes for channels 1 to 18.
#define ADC_CFGR_DMNGT
ADC Data Management configuration.
#define ADC3_TR1_LT1
ADC analog watchdog 1 threshold low.
#define ADC_CR_ADSTP
ADC Stop of Regular conversion.
#define ADC_SMPR2_SMP16
ADC Channel 16 Sampling time selection.
#define ADC_CFGR_RES_0
0x00000004
#define ADC_CR_ADVREGEN
ADC Voltage regulator Enable.
#define ADC_SQR2_SQ5
ADC 5th conversion in regular sequence.
#define ADC_CFGR2_OVSR_Pos
#define ADC_CR_ADCALDIF
ADC Differential Mode for calibration.
#define ADC_CFGR2_OVSS
ADC Regular Oversampling shift.
#define ADC_SQR1_SQ2
ADC 2nd conversion in regular sequence.
#define ADC_AWD2CR_AWD2CH
ADC Analog watchdog 2 channel selection.
#define ADC_CR_DEEPPWD
ADC Deep power down Enable.
#define ADC_CFGR2_ROVSE
ADC Regular group oversampler enable.
#define ADC_CFGR2_JOVSE
ADC Injected group oversampler enable.
#define ADC_OFR1_SSATE
ADC Signed saturation Enable.
#define ADC_CFGR2_OVSR
ADC oversampling Ratio.
#define ADC_CFGR_AUTDLY
ADC Delayed conversion mode.
#define ADC_SMPR2_SMP17
ADC Channel 17 Sampling time selection.
#define ADC_OFR1_OFFSET1
ADC data offset 1 for channel programmed into bits OFFSET1_CH[4:0].
#define ADC_CFGR_JAWD1EN
ADC Analog watchdog 1 enable on injected Channels.
#define ADC_CFGR_JQDIS
ADC Injected queue disable.
#define ADC3_TR3_HT3
ADC analog watchdog 3 threshold high.
#define ADC_SMPR2_SMP14
ADC Channel 14 Sampling time selection.
#define ADC_CFGR_CONT
ADC Single/continuous conversion mode for regular conversion.
#define ADC3_CFGR2_SMPTRIG
ADC Sample Time Control Trigger mode.
#define ADC_CR_ADCAL
ADC Calibration.
#define ADC_CFGR_RES_1
0x00000008
#define ADC3_TR3_LT3
ADC analog watchdog 3 threshold low.
#define ADC3_TR2_HT2
ADC analog watchdog 2 threshold high.
#define ADC_OFR4_SSATE
ADC Signed saturation Enable.
#define ADC_CFGR_AWD1CH
ADC Analog watchdog 1 Channel selection.
#define ADC3_TR1_HT1
ADC analog watchdog 1 threshold high.
#define ADC_SQR1_SQ3
ADC 3rd conversion in regular sequence.
#define ADC_SQR2_SQ7
ADC 7th conversion in regular sequence.
#define ADC_CFGR_AWD1EN
ADC Analog watchdog 1 enable on regular Channels.
#define ADC_SQR3_SQ14
ADC 14th conversion in regular sequence.
#define ADC_OFR3_OFFSET3
ADC data offset 3 for channel programmed into bits OFFSET3_CH[4:0].
#define ADC_SMPR2_SMP15
ADC Channel 15 Sampling time selection.
#define ADC_CALFACT_CALFACT_D
ADC calibration factors in differential mode.
#define ADC_SQR2_SQ6
ADC 6th conversion in regular sequence.
#define ADC3_TR2_LT2
ADC analog watchdog 2 threshold low.
#define ADC_OFR4_OFFSET4_CH
ADC Channel selection for the data offset 4.
#define ADC_CFGR_EXTSEL
ADC External trigger selection for regular group.
#define ADC_CCR_PRESC_Pos
#define ADC_CFGR2_ROVSM
ADC Regular oversampling mode.
#define ADC_OFR3_OFFSET3_CH
ADC Channel selection for the data offset 3.
#define ADC_SQR1_SQ1
ADC 1st conversion in regular sequence.
#define ADC_LTR_LT
ADC Analog watchdog 1, 2 and 3 lower threshold.
#define ADC_CR_JADSTP
ADC Stop of injected conversion.
#define ADC_HTR_HT
ADC Analog watchdog 1,2 and 3 higher threshold.
#define ADC_OFR2_OFFSET2_CH
ADC Channel selection for the data offset 2.
#define ADC_CR_ADDIS
ADC Disable command.
#define ADC_CFGR_AWD1SGL
Enable the watchdog 1 on a single channel or on all channels.
#define ADC_SQR3_SQ11
ADC 11th conversion in regular sequence.
#define ADC_CFGR_JQM
ADC JSQR Queue mode.
#define ADC_CFGR_DMNGT_0
0x00000001
#define ADC_CR_BOOST
ADC Boost Mode configuration.
#define ADC_SQR1_L
ADC regular channel sequence length.
#define ADC_CR_BOOST_0
0x00000100
#define ADC_CFGR_JDISCEN
ADC Discontinuous mode on injected channels.
#define ADC_CFGR_RES
ADC Data resolution.
#define ADC_CFGR_OVRMOD
ADC overrun mode.
#define ADC_CFGR_EXTEN
ADC External trigger enable and polarity selection for regular channels.
#define ADC_CR_BOOST_1
0x00000200
#define ADC_SQR2_SQ9
ADC 9th conversion in regular sequence.
uint32_t HAL_RCCEx_GetPeriphCLKFreq(uint64_t PeriphClk)
#define RCC_PERIPHCLK_ADC
uint32_t HAL_RCC_GetHCLKFreq(void)
#define REV_ID_Y
STM32H7 rev.Y.
uint32_t SystemCoreClock
System Domain1 Clock Frequency.
This file contains all the functions prototypes for the HAL module driver.
#define assert_param(expr)
Uncomment the line below to expanse the "assert_param" macro in the HAL drivers code.
#define HAL_IS_BIT_SET(REG, BIT)
HAL_StatusTypeDef
HAL Status structures definition.
#define __HAL_UNLOCK(__HANDLE__)
#define __HAL_LOCK(__HANDLE__)
Structure definition of ADC analog watchdog.
uint32_t WatchdogNumber
Select which ADC analog watchdog is monitoring the selected channel.
FunctionalState ITMode
Specify whether the analog watchdog is configured in interrupt or polling mode.
uint32_t LowThreshold
Configures the ADC analog watchdog Low threshold value.
uint32_t HighThreshold
Configure the ADC analog watchdog High threshold value.
uint32_t Channel
Select which ADC channel to monitor by analog watchdog.
uint32_t WatchdogMode
Configure the ADC analog watchdog mode: single/all/none channels.
Structure definition of ADC channel for regular group.
uint32_t Rank
Specify the rank in the regular group sequencer.
uint32_t SingleDiff
Select single-ended or differential input.
uint32_t Offset
Define the offset to be subtracted from the raw converted data.
FunctionalState OffsetRightShift
Define the Right-shift data after Offset correction.
uint32_t Channel
Specify the channel to configure into ADC regular group.
FunctionalState OffsetSignedSaturation
Specify whether the Signed saturation feature is used or not.
uint32_t SamplingTime
Sampling time value to be set for the selected channel.
uint32_t OffsetNumber
Select the offset number This parameter can be a value of ADC instance - Offset number Caution: Only ...
ADC handle Structure definition.
ADC_InjectionConfigTypeDef InjectionConfig
ADC injected channel configuration build-up structure.
DMA_HandleTypeDef * DMA_Handle
Pointer DMA Handler.
ADC_TypeDef * Instance
Register base address.
ADC_InitTypeDef Init
ADC initialization parameters and regular conversions setting.
__IO uint32_t ErrorCode
ADC Error code.
HAL_LockTypeDef Lock
ADC locking object.
__IO uint32_t State
ADC communication state (bitmap of ADC states).
FunctionalState ContinuousConvMode
Specify whether the conversion is performed in single mode (one conversion) or continuous mode for AD...
uint32_t ExternalTrigConv
Select the external event source used to trigger ADC group regular conversion start.
uint32_t ScanConvMode
Configure the sequencer of ADC groups regular and injected.
uint32_t ConversionDataManagement
Specifies whether the Data conversion data is managed: using the DMA (oneshot or circular),...
uint32_t NbrOfDiscConversion
Specifies the number of discontinuous conversions in which the main sequence of ADC group regular (pa...
uint32_t Overrun
Select the behavior in case of overrun: data overwritten or preserved (default).
FunctionalState OversamplingMode
Specify whether the oversampling feature is enabled or disabled.
uint32_t ClockPrescaler
Select ADC clock source (synchronous clock derived from APB clock or asynchronous clock derived from ...
uint32_t LeftBitShift
Configures the left shifting applied to the final result with or without oversampling.
uint32_t NbrOfConversion
Specify the number of ranks that will be converted within the regular group sequencer.
uint32_t Resolution
Configure the ADC resolution.
uint32_t EOCSelection
Specify which EOC (End Of Conversion) flag is used for conversion by polling and interruption: end of...
uint32_t ExternalTrigConvEdge
Select the external event edge used to trigger ADC group regular conversion start.
ADC_OversamplingTypeDef Oversampling
Specify the Oversampling parameters.
FunctionalState DiscontinuousConvMode
Specify whether the conversions sequence of ADC group regular is performed in Complete-sequence/Disco...
FunctionalState LowPowerAutoWait
Select the dynamic low power Auto Delay: new conversion start only when the previous conversion (for ...
uint32_t ChannelCount
Number of channels in the injected sequence.
uint32_t ContextQueue
Injected channel configuration context: build-up over each HAL_ADCEx_InjectedConfigChannel() call to ...
uint32_t Ratio
Configures the oversampling ratio.
uint32_t RightBitShift
Configures the division coefficient for the Oversampler.
uint32_t OversamplingStopReset
Selects the regular oversampling mode.
uint32_t TriggeredMode
Selects the regular triggered oversampling mode.
Analog to Digital Converter.
__IO uint32_t HTR1_TR2
ADC watchdog higher threshold register 1, Address offset: 0x24.
__IO uint32_t SQR1
ADC regular sequence register 1, Address offset: 0x30.
__IO uint32_t AWD2CR
ADC Analog Watchdog 2 Configuration Register, Address offset: 0xA0.
__IO uint32_t CFGR2
ADC Configuration register 2, Address offset: 0x10.
__IO uint32_t OFR3
ADC offset register 3, Address offset: 0x68.
__IO uint32_t OFR4
ADC offset register 4, Address offset: 0x6C.
__IO uint32_t AWD3CR
ADC Analog Watchdog 3 Configuration Register, Address offset: 0xA4.
__IO uint32_t CFGR
ADC Configuration register, Address offset: 0x0C.
__IO uint32_t RES1_TR3
Reserved for ADC1/2, ADC3 threshold register, Address offset: 0x28.
__IO uint32_t SQR3
ADC regular sequence register 3, Address offset: 0x38.
__IO uint32_t CR
ADC control register, Address offset: 0x08.
__IO uint32_t SQR2
ADC regular sequence register 2, Address offset: 0x34.
__IO uint32_t SMPR1
ADC sample time register 1, Address offset: 0x14.
__IO uint32_t IER
ADC Interrupt Enable Register, Address offset: 0x04.
__IO uint32_t HTR2_CALFACT
ADC watchdog Higher threshold register 2, Calfact for ADC3, Address offset: 0xB4.
__IO uint32_t DR
ADC regular data register, Address offset: 0x40.
__IO uint32_t LTR3_RES10
ADC watchdog Lower threshold register 3, specific ADC1/2, Address offset: 0xB8.
__IO uint32_t DIFSEL_RES12
ADC Differential Mode Selection Register specific ADC1/2, Address offset: 0xC0.
__IO uint32_t OFR1
ADC offset register 1, Address offset: 0x60.
__IO uint32_t SMPR2
ADC sample time register 2, Address offset: 0x18.
__IO uint32_t SQR4
ADC regular sequence register 4, Address offset: 0x3C.
__IO uint32_t LTR2_DIFSEL
ADC watchdog Lower threshold register 2, Difsel for ADC3, Address offset: 0xB0.
__IO uint32_t PCSEL_RES0
Reserved for ADC3, ADC1/2 pre-channel selection, Address offset: 0x1C.
__IO uint32_t CALFACT_RES13
ADC Calibration Factors specific ADC1/2, Address offset: 0xC4.
__IO uint32_t ISR
ADC Interrupt and Status Register, Address offset: 0x00.
__IO uint32_t OFR2
ADC offset register 2, Address offset: 0x64.
__IO uint32_t HTR3_RES11
ADC watchdog Higher threshold register 3, specific ADC1/2, Address offset: 0xBC.
__IO uint32_t LTR1_TR1
ADC watchdog Lower threshold register 1, Address offset: 0x20.
void(* XferCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer complete callback.
void(* XferErrorCallback)(struct __DMA_HandleTypeDef *hdma)
DMA transfer error callback.
__IO HAL_DMA_StateTypeDef State
DMA transfer state.
void(* XferHalfCpltCallback)(struct __DMA_HandleTypeDef *hdma)
DMA Half transfer complete callback.