@@ -122,16 +122,23 @@ static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel)
122122 case 15 :
123123 stm32_channel = ADC_CHANNEL_15 ;
124124 break ;
125+ #ifdef ADC_CHANNEL_16
125126 case 16 :
126127 stm32_channel = ADC_CHANNEL_16 ;
127128 break ;
129+ #endif
128130 case 17 :
129131 stm32_channel = ADC_CHANNEL_17 ;
130132 break ;
131- #if defined( SOC_SERIES_STM32F0 ) || defined( SOC_SERIES_STM32F2 ) || defined( SOC_SERIES_STM32F4 ) || defined( SOC_SERIES_STM32F7 ) || defined( SOC_SERIES_STM32L4 )
133+ #ifdef ADC_CHANNEL_18
132134 case 18 :
133135 stm32_channel = ADC_CHANNEL_18 ;
134136 break ;
137+ #endif
138+ #ifdef ADC_CHANNEL_19
139+ case 19 :
140+ stm32_channel = ADC_CHANNEL_19 ;
141+ break ;
135142#endif
136143 }
137144
@@ -150,10 +157,22 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
150157
151158 rt_memset (& ADC_ChanConf , 0 , sizeof (ADC_ChanConf ));
152159
153- #if defined(SOC_SERIES_STM32F1 )
160+ #ifndef ADC_CHANNEL_16
161+ if (channel == 16 )
162+ {
163+ LOG_E ("ADC channel must not be 16." );
164+ return - RT_ERROR ;
165+ }
166+ #endif
167+
168+ /* ADC channel number is up to 17 */
169+ #if !defined(ADC_CHANNEL_18 )
154170 if (channel <= 17 )
155- #elif defined(SOC_SERIES_STM32F0 ) || defined(SOC_SERIES_STM32F2 ) || defined(SOC_SERIES_STM32F4 ) || defined(SOC_SERIES_STM32F7 ) \
156- || defined(SOC_SERIES_STM32L4 ) || defined(SOC_SERIES_STM32G0 )
171+ /* ADC channel number is up to 19 */
172+ #elif defined(ADC_CHANNEL_19 )
173+ if (channel <= 19 )
174+ /* ADC channel number is up to 18 */
175+ #else
157176 if (channel <= 18 )
158177#endif
159178 {
@@ -162,10 +181,11 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch
162181 }
163182 else
164183 {
165- #if defined(SOC_SERIES_STM32F1 )
184+ #if ! defined(ADC_CHANNEL_18 )
166185 LOG_E ("ADC channel must be between 0 and 17." );
167- #elif defined(SOC_SERIES_STM32F0 ) || defined(SOC_SERIES_STM32F2 ) || defined(SOC_SERIES_STM32F4 ) || defined(SOC_SERIES_STM32F7 ) \
168- || defined(SOC_SERIES_STM32L4 ) || defined(SOC_SERIES_STM32G0 )
186+ #elif defined(ADC_CHANNEL_19 )
187+ LOG_E ("ADC channel must be between 0 and 19." );
188+ #else
169189 LOG_E ("ADC channel must be between 0 and 18." );
170190#endif
171191 return - RT_ERROR ;
0 commit comments