Skip to content

Commit ef626d7

Browse files
committed
[NUCLEO_F334R8] Fix issue with multiple ADC initialization
1 parent 4dd46fd commit ef626d7

File tree

1 file changed

+12
-8
lines changed
  • libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8

1 file changed

+12
-8
lines changed

libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F334R8/analogin_api.c

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@
3737

3838
ADC_HandleTypeDef AdcHandle;
3939

40-
int adc_inited = 0;
40+
int adc1_inited = 0;
41+
int adc2_inited = 0;
4142

4243
void analogin_init(analogin_t *obj, PinName pin)
4344
{
@@ -51,13 +52,16 @@ void analogin_init(analogin_t *obj, PinName pin)
5152
// Save pin number for the read function
5253
obj->pin = pin;
5354

54-
// The ADC initialization is done once
55-
if (adc_inited == 0) {
56-
adc_inited = 1;
57-
58-
// Enable ADC clock
59-
if (obj->adc == ADC_1) __ADC1_CLK_ENABLE();
60-
if (obj->adc == ADC_2) __ADC2_CLK_ENABLE();
55+
// The ADC initialization is done only once for each ADC
56+
if ((adc1_inited == 0) || (adc2_inited == 0)) {
57+
if (obj->adc == ADC_1) {
58+
__ADC12_CLK_ENABLE();
59+
adc1_inited = 1;
60+
}
61+
if (obj->adc == ADC_2) {
62+
__ADC12_CLK_ENABLE();
63+
adc2_inited = 1;
64+
}
6165

6266
// Configure ADC
6367
AdcHandle.Instance = (ADC_TypeDef *)(obj->adc);

0 commit comments

Comments
 (0)