@@ -174,90 +174,87 @@ uint16_t adc_read(analogin_t *obj)
174
174
sConfig .OffsetRightShift = DISABLE ;
175
175
sConfig .OffsetSignedSaturation = DISABLE ;
176
176
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 ;
180
181
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 ;
231
182
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 ;
238
186
break ;
239
- case 18 :
240
- sConfig .Channel = ADC_CHANNEL_18 ;
241
187
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 ;
248
191
break ;
249
- case 19 :
250
- sConfig .Channel = ADC_CHANNEL_19 ;
251
192
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 ;
259
193
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
+ }
261
258
}
262
259
263
260
if (HAL_ADC_ConfigChannel (& obj -> handle , & sConfig ) != HAL_OK ) {
@@ -273,7 +270,13 @@ uint16_t adc_read(analogin_t *obj)
273
270
if (HAL_ADC_PollForConversion (& obj -> handle , 10 ) == HAL_OK ) {
274
271
adcValue = (uint16_t )HAL_ADC_GetValue (& obj -> handle );
275
272
}
273
+
276
274
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
+
277
280
return adcValue ;
278
281
}
279
282
0 commit comments