Skip to content

Commit efbeb0d

Browse files
committed
STM32: analogin: adc struct member not needed anymore
The adc in analogin_t has the same value as the Instance member of ADC_HandleTypeDef. So we can only rely on the later one.
1 parent 8540e8a commit efbeb0d

File tree

17 files changed

+50
-91
lines changed

17 files changed

+50
-91
lines changed

targets/TARGET_STM/TARGET_STM32F0/analogin_api.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ int adc_inited = 0;
4040

4141
void analogin_init(analogin_t *obj, PinName pin) {
4242
// Get the peripheral name from the pin and assign it to the object
43-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
44-
MBED_ASSERT(obj->adc != (ADCName)NC);
43+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
44+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
4545

4646
// Get the functions (adc channel) from the pin and assign it to the object
4747
uint32_t function = pinmap_function(pin, PinMap_ADC);
@@ -65,7 +65,6 @@ void analogin_init(analogin_t *obj, PinName pin) {
6565
__ADC1_CLK_ENABLE();
6666

6767
// Configure ADC
68-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
6968
obj->handle.State = HAL_ADC_STATE_RESET;
7069
obj->handle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
7170
obj->handle.Init.Resolution = ADC_RESOLUTION12b;
@@ -93,8 +92,6 @@ void analogin_init(analogin_t *obj, PinName pin) {
9392
static inline uint16_t adc_read(analogin_t *obj) {
9493
ADC_ChannelConfTypeDef sConfig;
9594

96-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
97-
9895
// Configure ADC channel
9996
sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
10097
#if defined (TARGET_STM32F091RC)

targets/TARGET_STM/TARGET_STM32F0/common_objects.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ struct i2c_s {
112112
};
113113

114114
struct analogin_s {
115-
ADCName adc;
116115
ADC_HandleTypeDef handle;
117116
PinName pin;
118117
uint8_t channel;

targets/TARGET_STM/TARGET_STM32F1/analogin_api.c

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ void analogin_init(analogin_t *obj, PinName pin)
4242
RCC_PeriphCLKInitTypeDef PeriphClkInit;
4343

4444
// Get the peripheral name from the pin and assign it to the object
45-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
46-
MBED_ASSERT(obj->adc != (ADCName)NC);
47-
45+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
46+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
47+
4848
// Get the functions (adc channel) from the pin and assign it to the object
4949
uint32_t function = pinmap_function(pin, PinMap_ADC);
5050
MBED_ASSERT(function != (uint32_t)NC);
@@ -77,7 +77,6 @@ void analogin_init(analogin_t *obj, PinName pin)
7777
HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit);
7878

7979
// Configure ADC
80-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
8180
obj->handle.State = HAL_ADC_STATE_RESET;
8281
obj->handle.Init.DataAlign = ADC_DATAALIGN_RIGHT;
8382
obj->handle.Init.ScanConvMode = DISABLE;
@@ -94,8 +93,6 @@ static inline uint16_t adc_read(analogin_t *obj)
9493
{
9594
ADC_ChannelConfTypeDef sConfig;
9695

97-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
98-
9996
// Configure ADC channel
10097
sConfig.Rank = 1;
10198
sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;

targets/TARGET_STM/TARGET_STM32F1/common_objects.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ struct i2c_s {
111111
};
112112

113113
struct analogin_s {
114-
ADCName adc;
115114
ADC_HandleTypeDef handle;
116115
PinName pin;
117116
uint8_t channel;

targets/TARGET_STM/TARGET_STM32F2/analogin_api.c

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
void analogin_init(analogin_t *obj, PinName pin)
4040
{
4141
uint32_t function = (uint32_t)NC;
42-
obj->adc = (ADCName)NC;
4342

4443
#if defined(ADC1)
4544
static int adc1_inited = 0;
@@ -56,18 +55,18 @@ void analogin_init(analogin_t *obj, PinName pin)
5655
if ((pin < 0xF0) || (pin >= 0x100)) {
5756
// Normal channels
5857
// Get the peripheral name from the pin and assign it to the object
59-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
58+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6059
// Get the functions (adc channel) from the pin and assign it to the object
6160
function = pinmap_function(pin, PinMap_ADC);
6261
// Configure GPIO
6362
pinmap_pinout(pin, PinMap_ADC);
6463
} else {
6564
// Internal channels
66-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC_Internal);
65+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6766
function = pinmap_function(pin, PinMap_ADC_Internal);
6867
// No GPIO configuration for internal channels
6968
}
70-
MBED_ASSERT(obj->adc != (ADCName)NC);
69+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
7170
MBED_ASSERT(function != (uint32_t)NC);
7271

7372
obj->channel = STM_PIN_CHANNEL(function);
@@ -78,28 +77,27 @@ void analogin_init(analogin_t *obj, PinName pin)
7877
// Check if ADC is already initialized
7978
// Enable ADC clock
8079
#if defined(ADC1)
81-
if ((obj->adc == ADC_1) && adc1_inited) return;
82-
if (obj->adc == ADC_1) {
80+
if (((ADCName)obj->handle.Instance == ADC_1) && adc1_inited) return;
81+
if ((ADCName)obj->handle.Instance == ADC_1) {
8382
__ADC1_CLK_ENABLE();
8483
adc1_inited = 1;
8584
}
8685
#endif
8786
#if defined(ADC2)
88-
if ((obj->adc == ADC_2) && adc2_inited) return;
89-
if (obj->adc == ADC_2) {
87+
if (((ADCName)obj->handle.Instance == ADC_2) && adc2_inited) return;
88+
if ((ADCName)obj->handle.Instance == ADC_2) {
9089
__ADC2_CLK_ENABLE();
9190
adc2_inited = 1;
9291
}
9392
#endif
9493
#if defined(ADC3)
95-
if ((obj->adc == ADC_3) && adc3_inited) return;
96-
if (obj->adc == ADC_3) {
94+
if (((ADCName)obj->handle.Instance == ADC_3) && adc3_inited) return;
95+
if ((ADCName)obj->handle.Instance == ADC_3) {
9796
__ADC3_CLK_ENABLE();
9897
adc3_inited = 1;
9998
}
10099
#endif
101100
// Configure ADC
102-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
103101
obj->handle.State = HAL_ADC_STATE_RESET;
104102
obj->handle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2;
105103
obj->handle.Init.Resolution = ADC_RESOLUTION12b;

targets/TARGET_STM/TARGET_STM32F3/analogin_api.c

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ void analogin_init(analogin_t *obj, PinName pin)
5353
#endif
5454

5555
// Get the peripheral name from the pin and assign it to the object
56-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
57-
MBED_ASSERT(obj->adc != (ADCName)NC);
56+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
57+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
5858

5959
// Get the pin function and assign the used channel to the object
6060
uint32_t function = pinmap_function(pin, PinMap_ADC);
@@ -73,36 +73,35 @@ void analogin_init(analogin_t *obj, PinName pin)
7373
// Check if ADC is already initialized
7474
// Enable ADC clock
7575
#if defined(ADC1)
76-
if ((obj->adc == ADC_1) && adc1_inited) return;
77-
if (obj->adc == ADC_1) {
76+
if (((ADCName)obj->handle.Instance == ADC_1) && adc1_inited) return;
77+
if ((ADCName)obj->handle.Instance == ADC_1) {
7878
__ADC1_CLK_ENABLE();
7979
adc1_inited = 1;
8080
}
8181
#endif
8282
#if defined(ADC2)
83-
if ((obj->adc == ADC_2) && adc2_inited) return;
84-
if (obj->adc == ADC_2) {
83+
if (((ADCName)obj->handle.Instance == ADC_2) && adc2_inited) return;
84+
if ((ADCName)obj->handle.Instance == ADC_2) {
8585
__ADC2_CLK_ENABLE();
8686
adc2_inited = 1;
8787
}
8888
#endif
8989
#if defined(ADC3)
90-
if ((obj->adc == ADC_3) && adc3_inited) return;
91-
if (obj->adc == ADC_3) {
90+
if (((ADCName)obj->handle.Instance == ADC_3) && adc3_inited) return;
91+
if ((ADCName)obj->handle.Instance == ADC_3) {
9292
__ADC34_CLK_ENABLE();
9393
adc3_inited = 1;
9494
}
9595
#endif
9696
#if defined(ADC4)
97-
if ((obj->adc == ADC_4) && adc4_inited) return;
98-
if (obj->adc == ADC_4) {
97+
if (((ADCName)obj->handle.Instance == ADC_4) && adc4_inited) return;
98+
if ((ADCName)obj->handle.Instance == ADC_4) {
9999
__ADC34_CLK_ENABLE();
100100
adc4_inited = 1;
101101
}
102102
#endif
103103

104104
// Configure ADC
105-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
106105
obj->handle.State = HAL_ADC_STATE_RESET;
107106
obj->handle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV2;
108107
obj->handle.Init.Resolution = ADC_RESOLUTION12b;
@@ -128,8 +127,6 @@ static inline uint16_t adc_read(analogin_t *obj)
128127
{
129128
ADC_ChannelConfTypeDef sConfig = {0};
130129

131-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
132-
133130
// Configure ADC channel
134131
sConfig.Rank = ADC_REGULAR_RANK_1;
135132
sConfig.SamplingTime = ADC_SAMPLETIME_19CYCLES_5;

targets/TARGET_STM/TARGET_STM32F3/common_objects.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ struct dac_s {
119119
};
120120

121121
struct analogin_s {
122-
ADCName adc;
123122
ADC_HandleTypeDef handle;
124123
PinName pin;
125124
uint8_t channel;

targets/TARGET_STM/TARGET_STM32F4/analogin_api.c

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
void analogin_init(analogin_t *obj, PinName pin)
4040
{
4141
uint32_t function = (uint32_t)NC;
42-
obj->adc = (ADCName)NC;
4342

4443
#if defined(ADC1)
4544
static int adc1_inited = 0;
@@ -56,18 +55,18 @@ void analogin_init(analogin_t *obj, PinName pin)
5655
if (pin < 0xF0) {
5756
// Normal channels
5857
// Get the peripheral name from the pin and assign it to the object
59-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
58+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6059
// Get the functions (adc channel) from the pin and assign it to the object
6160
function = pinmap_function(pin, PinMap_ADC);
6261
// Configure GPIO
6362
pinmap_pinout(pin, PinMap_ADC);
6463
} else {
6564
// Internal channels
66-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC_Internal);
65+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6766
function = pinmap_function(pin, PinMap_ADC_Internal);
6867
// No GPIO configuration for internal channels
6968
}
70-
MBED_ASSERT(obj->adc != (ADCName)NC);
69+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
7170
MBED_ASSERT(function != (uint32_t)NC);
7271

7372
obj->channel = STM_PIN_CHANNEL(function);
@@ -78,28 +77,27 @@ void analogin_init(analogin_t *obj, PinName pin)
7877
// Check if ADC is already initialized
7978
// Enable ADC clock
8079
#if defined(ADC1)
81-
if ((obj->adc == ADC_1) && adc1_inited) return;
82-
if (obj->adc == ADC_1) {
80+
if (((ADCName)obj->handle.Instance == ADC_1) && adc1_inited) return;
81+
if ((ADCName)obj->handle.Instance == ADC_1) {
8382
__HAL_RCC_ADC1_CLK_ENABLE();
8483
adc1_inited = 1;
8584
}
8685
#endif
8786
#if defined(ADC2)
88-
if ((obj->adc == ADC_2) && adc2_inited) return;
89-
if (obj->adc == ADC_2) {
87+
if (((ADCName)obj->handle.Instance == ADC_2) && adc2_inited) return;
88+
if ((ADCName)obj->handle.Instance == ADC_2) {
9089
__HAL_RCC_ADC2_CLK_ENABLE();
9190
adc2_inited = 1;
9291
}
9392
#endif
9493
#if defined(ADC3)
95-
if ((obj->adc == ADC_3) && adc3_inited) return;
96-
if (obj->adc == ADC_3) {
94+
if (((ADCName)obj->handle.Instance == ADC_3) && adc3_inited) return;
95+
if ((ADCName)obj->handle.Instance == ADC_3) {
9796
__HAL_RCC_ADC3_CLK_ENABLE();
9897
adc3_inited = 1;
9998
}
10099
#endif
101100
// Configure ADC
102-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
103101
obj->handle.State = HAL_ADC_STATE_RESET;
104102
obj->handle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
105103
obj->handle.Init.Resolution = ADC_RESOLUTION_12B;
@@ -123,8 +121,6 @@ static inline uint16_t adc_read(analogin_t *obj)
123121
{
124122
ADC_ChannelConfTypeDef sConfig = {0};
125123

126-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
127-
128124
// Configure ADC channel
129125
sConfig.Rank = 1;
130126
sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;

targets/TARGET_STM/TARGET_STM32F4/common_objects.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ struct flash_s {
117117
#endif
118118

119119
struct analogin_s {
120-
ADCName adc;
121120
ADC_HandleTypeDef handle;
122121
PinName pin;
123122
uint8_t channel;

targets/TARGET_STM/TARGET_STM32F7/analogin_api.c

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
void analogin_init(analogin_t *obj, PinName pin)
4040
{
4141
uint32_t function = (uint32_t)NC;
42-
obj->adc = (ADCName)NC;
4342

4443
#if defined(ADC1)
4544
static int adc1_inited = 0;
@@ -56,18 +55,17 @@ void analogin_init(analogin_t *obj, PinName pin)
5655
if (pin < 0xF0) {
5756
// Normal channels
5857
// Get the peripheral name from the pin and assign it to the object
59-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC);
60-
// Get the functions (adc channel) from the pin and assign it to the object
58+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6159
function = pinmap_function(pin, PinMap_ADC);
6260
// Configure GPIO
6361
pinmap_pinout(pin, PinMap_ADC);
6462
} else {
6563
// Internal channels
66-
obj->adc = (ADCName)pinmap_peripheral(pin, PinMap_ADC_Internal);
64+
obj->handle.Instance = (ADC_TypeDef *) pinmap_peripheral(pin, PinMap_ADC);
6765
function = pinmap_function(pin, PinMap_ADC_Internal);
6866
// No GPIO configuration for internal channels
6967
}
70-
MBED_ASSERT(obj->adc != (ADCName)NC);
68+
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
7169
MBED_ASSERT(function != (uint32_t)NC);
7270

7371
obj->channel = STM_PIN_CHANNEL(function);
@@ -78,29 +76,28 @@ void analogin_init(analogin_t *obj, PinName pin)
7876
// Check if ADC is already initialized
7977
// Enable ADC clock
8078
#if defined(ADC1)
81-
if ((obj->adc == ADC_1) && adc1_inited) return;
82-
if (obj->adc == ADC_1) {
79+
if (((ADCName)obj->handle.Instance == ADC_1) && adc1_inited) return;
80+
if ((ADCName)obj->handle.Instance == ADC_1) {
8381
__HAL_RCC_ADC1_CLK_ENABLE();
8482
adc1_inited = 1;
8583
}
8684
#endif
8785
#if defined(ADC2)
88-
if ((obj->adc == ADC_2) && adc2_inited) return;
89-
if (obj->adc == ADC_2) {
86+
if (((ADCName)obj->handle.Instance == ADC_2) && adc2_inited) return;
87+
if ((ADCName)obj->handle.Instance == ADC_2) {
9088
__HAL_RCC_ADC2_CLK_ENABLE();
9189
adc2_inited = 1;
9290
}
9391
#endif
9492
#if defined(ADC3)
95-
if ((obj->adc == ADC_3) && adc3_inited) return;
96-
if (obj->adc == ADC_3) {
93+
if (((ADCName)obj->handle.Instance == ADC_3) && adc3_inited) return;
94+
if ((ADCName)obj->handle.Instance == ADC_3) {
9795
__HAL_RCC_ADC3_CLK_ENABLE();
9896
adc3_inited = 1;
9997
}
10098
#endif
10199

102100
// Configure ADC
103-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
104101
obj->handle.State = HAL_ADC_STATE_RESET;
105102
obj->handle.Init.ClockPrescaler = ADC_CLOCKPRESCALER_PCLK_DIV4;
106103
obj->handle.Init.Resolution = ADC_RESOLUTION_12B;
@@ -124,8 +121,6 @@ static inline uint16_t adc_read(analogin_t *obj)
124121
{
125122
ADC_ChannelConfTypeDef sConfig = {0};
126123

127-
obj->handle.Instance = (ADC_TypeDef *)(obj->adc);
128-
129124
// Configure ADC channel
130125
sConfig.Rank = 1;
131126
sConfig.SamplingTime = ADC_SAMPLETIME_15CYCLES;

targets/TARGET_STM/TARGET_STM32F7/common_objects.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,6 @@ struct i2c_s {
112112
};
113113

114114
struct analogin_s {
115-
ADCName adc;
116115
ADC_HandleTypeDef handle;
117116
PinName pin;
118117
uint8_t channel;

0 commit comments

Comments
 (0)