@@ -33,6 +33,8 @@ static PinName g_current_pin = NC;
3333#ifndef ADC_SAMPLINGTIME
3434#if defined(ADC_SAMPLETIME_8CYCLES_5)
3535#define ADC_SAMPLINGTIME ADC_SAMPLETIME_8CYCLES_5;
36+ #elif defined(ADC_SAMPLETIME_12CYCLES)
37+ #define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES;
3638#elif defined(ADC_SAMPLETIME_12CYCLES_5)
3739#define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES_5;
3840#elif defined(ADC_SAMPLETIME_13CYCLES_5)
@@ -60,6 +62,8 @@ static PinName g_current_pin = NC;
6062#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_384CYCLES
6163#elif defined(ADC_SAMPLETIME_810CYCLES_5)
6264#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_810CYCLES_5
65+ #elif defined(ADC_SAMPLETIME_814CYCLES)
66+ #define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_814CYCLES
6367#elif defined(ADC_SAMPLETIME_640CYCLES_5)
6468#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_640CYCLES_5
6569#elif defined(ADC_SAMPLETIME_601CYCLES_5)
@@ -176,6 +180,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
176180 case 23 :
177181 channel = ADC_CHANNEL_23;
178182 break ;
183+ #ifdef ADC_CHANNEL_24
179184 case 24 :
180185 channel = ADC_CHANNEL_24;
181186 break ;
@@ -202,6 +207,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
202207 channel = ADC_CHANNEL_31;
203208 break ;
204209#endif
210+ #endif
205211#endif
206212 default :
207213 channel = 0 ;
@@ -588,6 +594,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
588594#endif
589595#ifdef ADC4
590596 else if (hadc->Instance == ADC4) {
597+ #ifdef __HAL_RCC_ADC4_CLK_ENABLE
598+ __HAL_RCC_ADC4_CLK_ENABLE ();
599+ #endif
591600#ifdef __HAL_RCC_ADC34_CLK_ENABLE
592601 __HAL_RCC_ADC34_CLK_ENABLE ();
593602#endif
@@ -707,6 +716,15 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
707716#endif
708717#ifdef ADC4
709718 else if (hadc->Instance == ADC4) {
719+ #ifdef __HAL_RCC_ADC4_FORCE_RESET
720+ __HAL_RCC_ADC4_FORCE_RESET ();
721+ #endif
722+ #ifdef __HAL_RCC_ADC4_RELEASE_RESET
723+ __HAL_RCC_ADC4_RELEASE_RESET ();
724+ #endif
725+ #ifdef __HAL_RCC_ADC4_CLK_DISABLE
726+ __HAL_RCC_ADC4_CLK_DISABLE ();
727+ #endif
710728#ifdef __HAL_RCC_ADC34_FORCE_RESET
711729 __HAL_RCC_ADC34_FORCE_RESET ();
712730#endif
@@ -910,7 +928,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
910928#endif /* STM32L4xx || STM32WBxx */
911929 return 0 ;
912930 }
913- #ifdef ADC_SCAN_SEQ_FIXED
931+ #if defined( ADC_SCAN_SEQ_FIXED) && defined(ADC_RANK_CHANNEL_NUMBER)
914932 AdcChannelConf.Rank = ADC_RANK_CHANNEL_NUMBER; /* Enable the rank of the selected channels when not fully configurable */
915933#else
916934 AdcChannelConf.Rank = ADC_REGULAR_RANK_1; /* Specifies the rank in the regular group sequencer */
@@ -954,7 +972,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
954972#if defined(STM32F0xx) || defined(STM32G0xx) || defined(STM32F1xx) || \
955973 defined (STM32WLxx) || defined (STM32F373xC) || defined (STM32F378xx)
956974 if (HAL_ADCEx_Calibration_Start (&AdcHandle) != HAL_OK)
957- #elif defined (STM32H7xx) || defined(STM32MP1xx)
975+ #elif defined (STM32H7xx) || defined(STM32MP1xx) || defined(STM32U5xx)
958976 if (HAL_ADCEx_Calibration_Start (&AdcHandle, ADC_CALIB_OFFSET, ADC_SINGLE_ENDED) != HAL_OK)
959977#else
960978 if (HAL_ADCEx_Calibration_Start (&AdcHandle, ADC_SINGLE_ENDED) != HAL_OK)
@@ -967,7 +985,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
967985
968986 /* ##-3- Start the conversion process ####################*/
969987 if (HAL_ADC_Start (&AdcHandle) != HAL_OK) {
970- /* Start Conversation Error */
988+ /* Start Conversion Error */
971989 return 0 ;
972990 }
973991
0 commit comments