Skip to content

Commit b1aebba

Browse files
authored
Merge pull request #2538 from bcostm/adcintch_stm32f4
STM32F4xx - Add support of ADC internal channels (Temp, VRef, VBat)
2 parents 6c0ac21 + aa23b64 commit b1aebba

File tree

33 files changed

+221
-107
lines changed

33 files changed

+221
-107
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ARCH_MAX/PinNames.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -222,6 +222,10 @@ typedef enum {
222222
PI_14 = 0x8E,
223223
PI_15 = 0x8F,
224224

225+
// ADC internal channels
226+
ADC_TEMP = 0xF0,
227+
ADC_VREF = 0xF1,
228+
ADC_VBAT = 0xF2,
225229

226230
// Arduino connector namings
227231
A0 = PA_0,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
5861
{NC, NC, 0}
5962
};
6063

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_B96B_F446VE/PinNames.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -156,6 +156,11 @@ typedef enum {
156156
PH_0 = 0x70,
157157
PH_1 = 0x71,
158158

159+
// ADC internal channels
160+
ADC_TEMP = 0xF0,
161+
ADC_VREF = 0xF1,
162+
ADC_VBAT = 0xF2,
163+
159164
// Arduino connector namings
160165
A0 = PA_1,
161166
A1 = PA_2,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F401VC/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
5861
{NC, NC, 0}
5962
};
6063

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F401VC/PinNames.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -139,6 +139,11 @@ typedef enum {
139139
PH_0 = 0x70,
140140
PH_1 = 0x71,
141141

142+
// ADC internal channels
143+
ADC_TEMP = 0xF0,
144+
ADC_VREF = 0xF1,
145+
ADC_VBAT = 0xF2,
146+
142147
// Generic signals namings
143148
LED1 = PD_12,
144149
LED2 = PD_13,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
5861
{NC, NC, 0}
5962
};
6063

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F407VG/PinNames.h

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
42-
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
43-
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
44-
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
42+
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
43+
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
44+
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -222,6 +222,11 @@ typedef enum {
222222
PI_14 = 0x8E,
223223
PI_15 = 0x8F,
224224

225+
// ADC internal channels
226+
ADC_TEMP = 0xF0,
227+
ADC_VREF = 0xF1,
228+
ADC_VBAT = 0xF2,
229+
225230
// Generic signals namings
226231
LED1 = PD_13,
227232
LED2 = PD_12,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ const PinMap PinMap_ADC[] = {
6363
{PF_8, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6
6464
{PF_9, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7
6565
{PF_10,ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8
66+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
67+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
68+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
6669
{NC, NC, 0}
6770
};
6871

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F429ZI/PinNames.h

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((MODE & 0x0F) << 0) |\
41-
((PUPD & 0x07) << 4) |\
42-
((AFNUM & 0x0F) << 7)))
43-
44-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((MODE & 0x0F) << 0) |\
45-
((PUPD & 0x07) << 4) |\
46-
((AFNUM & 0x0F) << 7) |\
47-
((CHANNEL & 0x0F) << 11) |\
48-
((INVERTED & 0x01) << 15)))
49-
50-
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
51-
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
52-
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
53-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
54-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
42+
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
43+
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
44+
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
5547
#define STM_MODE_INPUT (0)
5648
#define STM_MODE_OUTPUT_PP (1)
5749
#define STM_MODE_OUTPUT_OD (2)
@@ -162,7 +154,6 @@ typedef enum {
162154
PE_14 = 0x4E,
163155
PE_15 = 0x4F,
164156

165-
166157
PF_0 = 0x50,
167158
PF_1 = 0x51,
168159
PF_2 = 0x52,
@@ -180,7 +171,6 @@ typedef enum {
180171
PF_14 = 0x5E,
181172
PF_15 = 0x5F,
182173

183-
184174
PG_0 = 0x60,
185175
PG_1 = 0x61,
186176
PG_2 = 0x62,
@@ -198,10 +188,14 @@ typedef enum {
198188
PG_14 = 0x6E,
199189
PG_15 = 0x6F,
200190

201-
202191
PH_0 = 0x70,
203192
PH_1 = 0x71,
204193

194+
// ADC internal channels
195+
ADC_TEMP = 0xF0,
196+
ADC_VREF = 0xF1,
197+
ADC_VBAT = 0xF2,
198+
205199
// Generic signals namings
206200
LED1 = PG_13, // Corresponds to LD3 on MB1075B
207201
LED2 = PG_14, // Corresponds to LD4 on MB1075B

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F469NI/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ const PinMap PinMap_ADC[] = {
6363
{PF_8, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC3_IN6
6464
{PF_9, ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC3_IN7
6565
{PF_10,ADC_3, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC3_IN8
66+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
67+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
68+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
6669
{NC, NC, 0}
6770
};
6871

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_DISCO_F469NI/PinNames.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -154,7 +154,6 @@ typedef enum {
154154
PE_14 = 0x4E,
155155
PE_15 = 0x4F,
156156

157-
158157
PF_0 = 0x50,
159158
PF_1 = 0x51,
160159
PF_2 = 0x52,
@@ -172,7 +171,6 @@ typedef enum {
172171
PF_14 = 0x5E,
173172
PF_15 = 0x5F,
174173

175-
176174
PG_0 = 0x60,
177175
PG_1 = 0x61,
178176
PG_2 = 0x62,
@@ -190,7 +188,6 @@ typedef enum {
190188
PG_14 = 0x6E,
191189
PG_15 = 0x6F,
192190

193-
194191
PH_0 = 0x70,
195192
PH_1 = 0x71,
196193
PH_2 = 0x72,
@@ -208,7 +205,6 @@ typedef enum {
208205
PH_14 = 0x7E,
209206
PH_15 = 0x7F,
210207

211-
212208
PI_0 = 0x80,
213209
PI_1 = 0x81,
214210
PI_2 = 0x82,
@@ -226,7 +222,6 @@ typedef enum {
226222
PI_14 = 0x8E,
227223
PI_15 = 0x8F,
228224

229-
230225
PJ_0 = 0x90,
231226
PJ_1 = 0x91,
232227
PJ_2 = 0x92,
@@ -244,6 +239,10 @@ typedef enum {
244239
PK_6 = 0xA6,
245240
PK_7 = 0xA7,
246241

242+
// ADC internal channels
243+
ADC_TEMP = 0xF0,
244+
ADC_VREF = 0xF1,
245+
ADC_VBAT = 0xF2,
247246

248247
// Arduino connector namings
249248
A0 = PB_1,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ELMO_F411RE/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
5861
{NC, NC, 0}
5962
};
6063

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_ELMO_F411RE/PinNames.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -124,6 +124,11 @@ typedef enum {
124124
PH_0 = 0x70,
125125
PH_1 = 0x71,
126126

127+
// ADC internal channels
128+
ADC_TEMP = 0xF0,
129+
ADC_VREF = 0xF1,
130+
ADC_VBAT = 0xF2,
131+
127132
// Not connected
128133
NC = (int)0xFFFFFFFF,
129134

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_MTS_DRAGONFLY_F411RE/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_VBAT)
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18 (shared with ADC_TEMP)
5861
{NC, NC, 0}
5962
};
6063

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_MTS_DRAGONFLY_F411RE/PinNames.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ extern "C" {
3737
#endif
3838

3939
// See stm32f4xx_hal_gpio.h and stm32f4xx_hal_gpio_ex.h for values of MODE, PUPD and AFNUM
40-
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM) << 7) | ((PUPD) << 4) | ((MODE) << 0)))
41-
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 15) | ((CHANNEL & 0x0F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
40+
#define STM_PIN_DATA(MODE, PUPD, AFNUM) ((int)(((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
41+
#define STM_PIN_DATA_EXT(MODE, PUPD, AFNUM, CHANNEL, INVERTED) ((int)(((INVERTED & 0x01) << 16) | ((CHANNEL & 0x1F) << 11) | ((AFNUM & 0x0F) << 7) | ((PUPD & 0x07) << 4) | ((MODE & 0x0F) << 0)))
4242
#define STM_PIN_MODE(X) (((X) >> 0) & 0x0F)
4343
#define STM_PIN_PUPD(X) (((X) >> 4) & 0x07)
4444
#define STM_PIN_AFNUM(X) (((X) >> 7) & 0x0F)
45-
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x0F)
46-
#define STM_PIN_INVERTED(X) (((X) >> 15) & 0x01)
45+
#define STM_PIN_CHANNEL(X) (((X) >> 11) & 0x1F)
46+
#define STM_PIN_INVERTED(X) (((X) >> 16) & 0x01)
4747
#define STM_MODE_INPUT (0)
4848
#define STM_MODE_OUTPUT_PP (1)
4949
#define STM_MODE_OUTPUT_OD (2)
@@ -124,6 +124,11 @@ typedef enum {
124124
PH_0 = 0x70,
125125
PH_1 = 0x71,
126126

127+
// ADC internal channels
128+
ADC_TEMP = 0xF0,
129+
ADC_VREF = 0xF1,
130+
ADC_VBAT = 0xF2,
131+
127132
// Arduino connector namings
128133
A0 = PC_2,
129134
A1 = PC_0,

hal/targets/hal/TARGET_STM/TARGET_STM32F4/TARGET_MTS_MDOT_F405RG/PeripheralPins.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ const PinMap PinMap_ADC[] = {
5555
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC1_IN13
5656
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC1_IN14
5757
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC1_IN15
58+
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)}, // ADC1_IN16
59+
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)}, // ADC1_IN17
60+
{ADC_VBAT, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)}, // ADC1_IN18
5861
{NC, NC, 0}
5962
};
6063

0 commit comments

Comments
 (0)