@@ -33,6 +33,8 @@ static PinName g_current_pin = NC;
33
33
#ifndef ADC_SAMPLINGTIME
34
34
#if defined(ADC_SAMPLETIME_8CYCLES_5)
35
35
#define ADC_SAMPLINGTIME ADC_SAMPLETIME_8CYCLES_5;
36
+ #elif defined(ADC_SAMPLETIME_12CYCLES)
37
+ #define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES;
36
38
#elif defined(ADC_SAMPLETIME_12CYCLES_5)
37
39
#define ADC_SAMPLINGTIME ADC_SAMPLETIME_12CYCLES_5;
38
40
#elif defined(ADC_SAMPLETIME_13CYCLES_5)
@@ -50,6 +52,10 @@ static PinName g_current_pin = NC;
50
52
#define ADC3_SAMPLINGTIME ADC3_SAMPLETIME_24CYCLES_5;
51
53
#endif
52
54
55
+ #if defined(ADC4_SAMPLETIME_19CYCLES_5) && !defined(ADC4_SAMPLINGTIME)
56
+ #define ADC4_SAMPLINGTIME ADC4_SAMPLETIME_19CYCLES_5;
57
+ #endif
58
+
53
59
/*
54
60
* Minimum ADC sampling time is required when reading
55
61
* internal channels so set it to max possible value.
@@ -64,6 +70,8 @@ static PinName g_current_pin = NC;
64
70
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_384CYCLES
65
71
#elif defined(ADC_SAMPLETIME_810CYCLES_5)
66
72
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_810CYCLES_5
73
+ #elif defined(ADC_SAMPLETIME_814CYCLES)
74
+ #define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_814CYCLES
67
75
#elif defined(ADC_SAMPLETIME_640CYCLES_5)
68
76
#define ADC_SAMPLINGTIME_INTERNAL ADC_SAMPLETIME_640CYCLES_5
69
77
#elif defined(ADC_SAMPLETIME_601CYCLES_5)
@@ -84,8 +92,8 @@ static PinName g_current_pin = NC;
84
92
#define ADC_CLOCK_DIV ADC_CLOCK_SYNC_PCLK_DIV4
85
93
#elif ADC_CLOCK_SYNC_PCLK_DIV2
86
94
#define ADC_CLOCK_DIV ADC_CLOCK_SYNC_PCLK_DIV2
87
- #elif defined(ADC_CLOCK_ASYNC_DIV1 )
88
- #define ADC_CLOCK_DIV ADC_CLOCK_ASYNC_DIV1
95
+ #elif defined(ADC_CLOCK_ASYNC_DIV4 )
96
+ #define ADC_CLOCK_DIV ADC_CLOCK_ASYNC_DIV4
89
97
#endif
90
98
#endif /* !ADC_CLOCK_DIV */
91
99
@@ -180,6 +188,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
180
188
case 23 :
181
189
channel = ADC_CHANNEL_23;
182
190
break ;
191
+ #ifdef ADC_CHANNEL_24
183
192
case 24 :
184
193
channel = ADC_CHANNEL_24;
185
194
break ;
@@ -206,6 +215,7 @@ static uint32_t get_adc_channel(PinName pin, uint32_t *bank)
206
215
channel = ADC_CHANNEL_31;
207
216
break ;
208
217
#endif
218
+ #endif
209
219
#endif
210
220
default :
211
221
channel = 0 ;
@@ -592,6 +602,9 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef *hadc)
592
602
#endif
593
603
#ifdef ADC4
594
604
else if (hadc->Instance == ADC4) {
605
+ #ifdef __HAL_RCC_ADC4_CLK_ENABLE
606
+ __HAL_RCC_ADC4_CLK_ENABLE ();
607
+ #endif
595
608
#ifdef __HAL_RCC_ADC34_CLK_ENABLE
596
609
__HAL_RCC_ADC34_CLK_ENABLE ();
597
610
#endif
@@ -711,6 +724,15 @@ void HAL_ADC_MspDeInit(ADC_HandleTypeDef *hadc)
711
724
#endif
712
725
#ifdef ADC4
713
726
else if (hadc->Instance == ADC4) {
727
+ #ifdef __HAL_RCC_ADC4_FORCE_RESET
728
+ __HAL_RCC_ADC4_FORCE_RESET ();
729
+ #endif
730
+ #ifdef __HAL_RCC_ADC4_RELEASE_RESET
731
+ __HAL_RCC_ADC4_RELEASE_RESET ();
732
+ #endif
733
+ #ifdef __HAL_RCC_ADC4_CLK_DISABLE
734
+ __HAL_RCC_ADC4_CLK_DISABLE ();
735
+ #endif
714
736
#ifdef __HAL_RCC_ADC34_FORCE_RESET
715
737
__HAL_RCC_ADC34_FORCE_RESET ();
716
738
#endif
@@ -778,6 +800,11 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
778
800
if (AdcHandle.Instance == ADC3) {
779
801
samplingTime = ADC3_SAMPLINGTIME;
780
802
}
803
+ #endif
804
+ #if defined(ADC4_SAMPLINGTIME)
805
+ if (AdcHandle.Instance == ADC4) {
806
+ samplingTime = ADC4_SAMPLINGTIME;
807
+ }
781
808
#endif
782
809
}
783
810
@@ -896,6 +923,9 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
896
923
#ifdef ADC_TRIGGER_FREQ_HIGH
897
924
AdcHandle.Init .TriggerFrequencyMode = ADC_TRIGGER_FREQ_HIGH;
898
925
#endif
926
+ #ifdef ADC_VREF_PPROT_NONE
927
+ AdcHandle.Init .VrefProtection = ADC_VREF_PPROT_NONE;
928
+ #endif
899
929
900
930
AdcHandle.State = HAL_ADC_STATE_RESET;
901
931
AdcHandle.DMA_Handle = NULL ;
@@ -918,7 +948,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
918
948
#endif
919
949
return 0 ;
920
950
}
921
- #ifdef ADC_SCAN_SEQ_FIXED
951
+ #if defined( ADC_SCAN_SEQ_FIXED) && defined(ADC_RANK_CHANNEL_NUMBER)
922
952
AdcChannelConf.Rank = ADC_RANK_CHANNEL_NUMBER; /* Enable the rank of the selected channels when not fully configurable */
923
953
#else
924
954
AdcChannelConf.Rank = ADC_REGULAR_RANK_1; /* Specifies the rank in the regular group sequencer */
@@ -968,7 +998,7 @@ uint16_t adc_read_value(PinName pin, uint32_t resolution)
968
998
969
999
/* ##-3- Start the conversion process ####################*/
970
1000
if (HAL_ADC_Start (&AdcHandle) != HAL_OK) {
971
- /* Start Conversation Error */
1001
+ /* Start Conversion Error */
972
1002
return 0 ;
973
1003
}
974
1004
0 commit comments