@@ -174,90 +174,87 @@ uint16_t adc_read(analogin_t *obj)
174174 sConfig .OffsetRightShift = DISABLE ;
175175 sConfig .OffsetSignedSaturation = DISABLE ;
176176
177- switch (obj -> channel ) {
178- case 0 :
179- sConfig .Channel = ADC_CHANNEL_0 ;
177+ switch (obj -> pin ) {
178+ case ADC_TEMP :
179+ sConfig .Channel = ADC_CHANNEL_TEMPSENSOR ;
180+ sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
180181 break ;
181- case 1 :
182- sConfig .Channel = ADC_CHANNEL_1 ;
183- break ;
184- case 2 :
185- sConfig .Channel = ADC_CHANNEL_2 ;
186- break ;
187- case 3 :
188- sConfig .Channel = ADC_CHANNEL_3 ;
189- break ;
190- case 4 :
191- sConfig .Channel = ADC_CHANNEL_4 ;
192- break ;
193- case 5 :
194- sConfig .Channel = ADC_CHANNEL_5 ;
195- break ;
196- case 6 :
197- sConfig .Channel = ADC_CHANNEL_6 ;
198- break ;
199- case 7 :
200- sConfig .Channel = ADC_CHANNEL_7 ;
201- break ;
202- case 8 :
203- sConfig .Channel = ADC_CHANNEL_8 ;
204- break ;
205- case 9 :
206- sConfig .Channel = ADC_CHANNEL_9 ;
207- break ;
208- case 10 :
209- sConfig .Channel = ADC_CHANNEL_10 ;
210- break ;
211- case 11 :
212- sConfig .Channel = ADC_CHANNEL_11 ;
213- break ;
214- case 12 :
215- sConfig .Channel = ADC_CHANNEL_12 ;
216- break ;
217- case 13 :
218- sConfig .Channel = ADC_CHANNEL_13 ;
219- break ;
220- case 14 :
221- sConfig .Channel = ADC_CHANNEL_14 ;
222- break ;
223- case 15 :
224- sConfig .Channel = ADC_CHANNEL_15 ;
225- break ;
226- case 16 :
227- sConfig .Channel = ADC_CHANNEL_16 ;
228- break ;
229- case 17 :
230- sConfig .Channel = ADC_CHANNEL_17 ;
231182
232- #if defined(ADC3 )
233- if ((ADCName )obj -> handle .Instance == ADC_3 ) {
234- sConfig .Channel = ADC_CHANNEL_VBAT ;
235- sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
236- }
237- #endif
183+ case ADC_VREF :
184+ sConfig .Channel = ADC_CHANNEL_VREFINT ;
185+ sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
238186 break ;
239- case 18 :
240- sConfig .Channel = ADC_CHANNEL_18 ;
241187
242- #if defined(ADC3 )
243- if ((ADCName )obj -> handle .Instance == ADC_3 ) {
244- sConfig .Channel = ADC_CHANNEL_TEMPSENSOR ;
245- sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
246- }
247- #endif
188+ case ADC_VBAT :
189+ sConfig .Channel = ADC_CHANNEL_VBAT ;
190+ sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
248191 break ;
249- case 19 :
250- sConfig .Channel = ADC_CHANNEL_19 ;
251192
252- #if defined(ADC3 )
253- if ((ADCName )obj -> handle .Instance == ADC_3 ) {
254- sConfig .Channel = ADC_CHANNEL_VREFINT ;
255- sConfig .SamplingTime = ADC_SAMPLETIME_810CYCLES_5 ;
256- }
257- #endif
258- break ;
259193 default :
260- return 0 ;
194+ switch (obj -> channel ) {
195+ case 0 :
196+ sConfig .Channel = ADC_CHANNEL_0 ;
197+ break ;
198+ case 1 :
199+ sConfig .Channel = ADC_CHANNEL_1 ;
200+ break ;
201+ case 2 :
202+ sConfig .Channel = ADC_CHANNEL_2 ;
203+ break ;
204+ case 3 :
205+ sConfig .Channel = ADC_CHANNEL_3 ;
206+ break ;
207+ case 4 :
208+ sConfig .Channel = ADC_CHANNEL_4 ;
209+ break ;
210+ case 5 :
211+ sConfig .Channel = ADC_CHANNEL_5 ;
212+ break ;
213+ case 6 :
214+ sConfig .Channel = ADC_CHANNEL_6 ;
215+ break ;
216+ case 7 :
217+ sConfig .Channel = ADC_CHANNEL_7 ;
218+ break ;
219+ case 8 :
220+ sConfig .Channel = ADC_CHANNEL_8 ;
221+ break ;
222+ case 9 :
223+ sConfig .Channel = ADC_CHANNEL_9 ;
224+ break ;
225+ case 10 :
226+ sConfig .Channel = ADC_CHANNEL_10 ;
227+ break ;
228+ case 11 :
229+ sConfig .Channel = ADC_CHANNEL_11 ;
230+ break ;
231+ case 12 :
232+ sConfig .Channel = ADC_CHANNEL_12 ;
233+ break ;
234+ case 13 :
235+ sConfig .Channel = ADC_CHANNEL_13 ;
236+ break ;
237+ case 14 :
238+ sConfig .Channel = ADC_CHANNEL_14 ;
239+ break ;
240+ case 15 :
241+ sConfig .Channel = ADC_CHANNEL_15 ;
242+ break ;
243+ case 16 :
244+ sConfig .Channel = ADC_CHANNEL_16 ;
245+ break ;
246+ case 17 :
247+ sConfig .Channel = ADC_CHANNEL_17 ;
248+ break ;
249+ case 18 :
250+ sConfig .Channel = ADC_CHANNEL_18 ;
251+ break ;
252+ case 19 :
253+ sConfig .Channel = ADC_CHANNEL_19 ;
254+ break ;
255+ default :
256+ return 0 ;
257+ }
261258 }
262259
263260 if (HAL_ADC_ConfigChannel (& obj -> handle , & sConfig ) != HAL_OK ) {
@@ -273,7 +270,13 @@ uint16_t adc_read(analogin_t *obj)
273270 if (HAL_ADC_PollForConversion (& obj -> handle , 10 ) == HAL_OK ) {
274271 adcValue = (uint16_t )HAL_ADC_GetValue (& obj -> handle );
275272 }
273+
276274 LL_ADC_SetCommonPathInternalCh (__LL_ADC_COMMON_INSTANCE ((& obj -> handle )-> Instance ), LL_ADC_PATH_INTERNAL_NONE );
275+
276+ if (HAL_ADC_Stop (& obj -> handle ) != HAL_OK ) {
277+ error ("HAL_ADC_Stop issue" );
278+ }
279+
277280 return adcValue ;
278281}
279282
0 commit comments