Skip to content

Commit a2320f2

Browse files
committed
NUCLEO_L073RZ: Add explicit pinmap support
1 parent 2855e80 commit a2320f2

File tree

7 files changed

+391
-265
lines changed

7 files changed

+391
-265
lines changed

targets/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L073RZ/PeripheralPinMaps.h

Lines changed: 275 additions & 0 deletions
Large diffs are not rendered by default.

targets/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L073RZ/PeripheralPins.c

Lines changed: 1 addition & 226 deletions
Original file line numberDiff line numberDiff line change
@@ -30,229 +30,4 @@
3030

3131
#include "PeripheralPins.h"
3232
#include "mbed_toolchain.h"
33-
34-
//==============================================================================
35-
// Notes
36-
//
37-
// - The pins mentioned Px_y_ALTz are alternative possibilities which use other
38-
// HW peripheral instances. You can use them the same way as any other "normal"
39-
// pin (i.e. PwmOut pwm(PA_7_ALT0);). These pins are not displayed on the board
40-
// pinout image on mbed.org.
41-
//
42-
// - The pins which are connected to other components present on the board have
43-
// the comment "Connected to xxx". The pin function may not work properly in this
44-
// case. These pins may not be displayed on the board pinout image on mbed.org.
45-
// Please read the board reference manual and schematic for more information.
46-
//
47-
// - Warning: pins connected to the default STDIO_UART_TX and STDIO_UART_RX pins are commented
48-
// See https://os.mbed.com/teams/ST/wiki/STDIO for more information.
49-
//
50-
//==============================================================================
51-
52-
53-
//*** ADC ***
54-
55-
MBED_WEAK const PinMap PinMap_ADC[] = {
56-
{PA_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 0, 0)}, // ADC_IN0
57-
{PA_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // ADC_IN1
58-
// {PA_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // ADC_IN2 // Connected to STDIO_UART_TX
59-
// {PA_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 3, 0)}, // ADC_IN3 // Connected to STDIO_UART_RX
60-
{PA_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 4, 0)}, // ADC_IN4
61-
// {PA_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 5, 0)}, // ADC_IN5 // Connected to LD2 [Green Led]
62-
{PA_6, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 6, 0)}, // ADC_IN6
63-
{PA_7, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 7, 0)}, // ADC_IN7
64-
{PB_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 8, 0)}, // ADC_IN8
65-
{PB_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 9, 0)}, // ADC_IN9
66-
{PC_0, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 10, 0)}, // ADC_IN10
67-
{PC_1, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 11, 0)}, // ADC_IN11
68-
{PC_2, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 12, 0)}, // ADC_IN12
69-
{PC_3, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 13, 0)}, // ADC_IN13
70-
{PC_4, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 14, 0)}, // ADC_IN14
71-
{PC_5, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 15, 0)}, // ADC_IN15
72-
{NC, NC, 0}
73-
};
74-
75-
MBED_WEAK const PinMap PinMap_ADC_Internal[] = {
76-
{ADC_TEMP, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 18, 0)},
77-
{ADC_VREF, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 17, 0)},
78-
{ADC_VLCD, ADC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 16, 0)},
79-
{NC, NC, 0}
80-
};
81-
82-
//*** DAC ***
83-
84-
MBED_WEAK const PinMap PinMap_DAC[] = {
85-
{PA_4, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 1, 0)}, // DAC_OUT1
86-
{PA_5, DAC_1, STM_PIN_DATA_EXT(STM_MODE_ANALOG, GPIO_NOPULL, 0, 2, 0)}, // DAC_OUT2 // Connected to LD2 [Green Led]
87-
{NC, NC, 0}
88-
};
89-
90-
//*** I2C ***
91-
92-
MBED_WEAK const PinMap PinMap_I2C_SDA[] = {
93-
{PA_10, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
94-
{PB_4, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF7_I2C3)},
95-
{PB_7, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
96-
{PB_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
97-
{PB_11, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)},
98-
{PB_14, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF5_I2C2)},
99-
{PC_1, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF7_I2C3)},
100-
{PC_9, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF7_I2C3)},
101-
{NC, NC, 0}
102-
};
103-
104-
MBED_WEAK const PinMap PinMap_I2C_SCL[] = {
105-
{PA_8, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF7_I2C3)},
106-
{PA_9, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C1)},
107-
{PB_6, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF1_I2C1)},
108-
{PB_8, I2C_1, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF4_I2C1)},
109-
{PB_10, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF6_I2C2)},
110-
{PB_13, I2C_2, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF5_I2C2)},
111-
{PC_0, I2C_3, STM_PIN_DATA(STM_MODE_AF_OD, GPIO_NOPULL, GPIO_AF7_I2C3)},
112-
{NC, NC, 0}
113-
};
114-
115-
//*** PWM ***
116-
117-
// TIM21 cannot be used because already used by the us_ticker
118-
MBED_WEAK const PinMap PinMap_PWM[] = {
119-
{PA_0, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 1, 0)}, // TIM2_CH1
120-
{PA_1, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
121-
// {PA_2, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3 // Connected to STDIO_UART_TX
122-
// {PA_2, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 1, 0)}, // TIM21_CH1 // Connected to STDIO_UART_TX
123-
// {PA_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4 // Connected to STDIO_UART_RX
124-
// {PA_3, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM21, 2, 0)}, // TIM21_CH2 // Connected to STDIO_UART_RX
125-
{PA_5, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1 // Connected to LD2 [Green Led]
126-
{PA_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
127-
{PA_6_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 1, 0)}, // TIM22_CH1
128-
{PA_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
129-
{PA_7_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM22, 2, 0)}, // TIM22_CH2
130-
{PA_15, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_TIM2, 1, 0)}, // TIM2_CH1
131-
{PB_0, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
132-
{PB_1, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
133-
{PB_3, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 2, 0)}, // TIM2_CH2
134-
{PB_4, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
135-
{PB_4_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 1, 0)}, // TIM22_CH1
136-
{PB_5, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM3, 2, 0)}, // TIM3_CH2
137-
{PB_5_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_TIM22, 2, 0)}, // TIM22_CH2
138-
{PB_10, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 3, 0)}, // TIM2_CH3
139-
{PB_11, PWM_2, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM2, 4, 0)}, // TIM2_CH4
140-
// {PB_13, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 1, 0)}, // TIM21_CH1
141-
// {PB_14, PWM_21, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_TIM21, 2, 0)}, // TIM21_CH2
142-
{PC_6, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 1, 0)}, // TIM3_CH1
143-
{PC_6_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 1, 0)}, // TIM22_CH1
144-
{PC_7, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 2, 0)}, // TIM3_CH2
145-
{PC_7_ALT0, PWM_22, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_TIM22, 2, 0)}, // TIM22_CH2
146-
{PC_8, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 3, 0)}, // TIM3_CH3
147-
{PC_9, PWM_3, STM_PIN_DATA_EXT(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_TIM3, 4, 0)}, // TIM3_CH4
148-
{NC, NC, 0}
149-
};
150-
151-
//*** SERIAL ***
152-
153-
MBED_WEAK const PinMap PinMap_UART_TX[] = {
154-
{PA_0, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
155-
{PA_2, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Connected to STDIO_UART_TX
156-
{PA_2_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // Connected to STDIO_UART_TX
157-
{PA_9, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
158-
{PA_14, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Connected to TCK
159-
{PA_14_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // Connected to TCK
160-
{PB_3, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)},
161-
{PB_6, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
162-
{PB_10, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
163-
{PB_11, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_LPUART1)},
164-
{PC_1, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
165-
{PC_4, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_LPUART1)},
166-
{PC_10, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
167-
{PC_10_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_LPUART1)},
168-
{PC_12, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USART5)},
169-
{NC, NC, 0}
170-
};
171-
172-
MBED_WEAK const PinMap PinMap_UART_RX[] = {
173-
{PA_1, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
174-
{PA_3, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)}, // Connected to STDIO_UART_RX
175-
{PA_3_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // Connected to STDIO_UART_RX
176-
{PA_10, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
177-
{PA_13, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)}, // Connected to TMS
178-
{PA_15, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
179-
{PB_4, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)},
180-
{PB_7, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_USART1)},
181-
{PB_10, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF7_LPUART1)},
182-
{PB_11, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
183-
{PC_0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_LPUART1)},
184-
{PC_5, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_LPUART1)},
185-
{PC_11, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
186-
{PC_11_ALT0, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_LPUART1)},
187-
{PD_2, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)},
188-
{NC, NC, 0}
189-
};
190-
191-
MBED_WEAK const PinMap PinMap_UART_RTS[] = {
192-
{PA_1, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
193-
{PA_12, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
194-
{PA_15, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
195-
{PB_1, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
196-
{PB_3, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_USART1)},
197-
{PB_5, UART_5, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART5)},
198-
{PB_12, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_LPUART1)},
199-
{PB_14, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
200-
{PD_2, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF0_LPUART1)},
201-
{NC, NC, 0}
202-
};
203-
204-
MBED_WEAK const PinMap PinMap_UART_CTS[] = {
205-
{PA_0, UART_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART2)},
206-
{PA_6, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
207-
{PA_11, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_USART1)},
208-
{PB_4, UART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF5_USART1)},
209-
{PB_7, UART_4, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF6_USART4)},
210-
{PB_13, LPUART_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF4_LPUART1)},
211-
{NC, NC, 0}
212-
};
213-
214-
//*** SPI ***
215-
216-
MBED_WEAK const PinMap PinMap_SPI_MOSI[] = {
217-
{PA_7, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
218-
{PA_12, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
219-
{PB_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
220-
{PB_15, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI2)},
221-
{PC_3, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_SPI2)},
222-
{NC, NC, 0}
223-
};
224-
225-
MBED_WEAK const PinMap PinMap_SPI_MISO[] = {
226-
{PA_6, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
227-
{PA_11, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
228-
{PB_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
229-
{PB_14, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI2)},
230-
{PC_2, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF2_SPI2)},
231-
{NC, NC, 0}
232-
};
233-
234-
MBED_WEAK const PinMap PinMap_SPI_SCLK[] = {
235-
{PA_5, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)}, // Connected to LD2 [Green Led]
236-
{PB_3, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
237-
{PB_10, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)},
238-
{PB_13, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI2)},
239-
{NC, NC, 0}
240-
};
241-
242-
MBED_WEAK const PinMap PinMap_SPI_SSEL[] = {
243-
{PA_4, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
244-
{PA_15, SPI_1, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI1)},
245-
{PB_9, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF5_SPI2)},
246-
{PB_12, SPI_2, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_NOPULL, GPIO_AF0_SPI2)},
247-
{NC, NC, 0}
248-
};
249-
250-
//*** USBDEVICE ***
251-
252-
MBED_WEAK const PinMap PinMap_USB_FS[] = {
253-
{PA_11, USB_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DM
254-
{PA_12, USB_FS, STM_PIN_DATA(STM_MODE_INPUT, GPIO_NOPULL, GPIO_AF_NONE)}, // USB_DP
255-
// {PA_13, USB_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE // Connected to TMS
256-
// {PC_9, USB_FS, STM_PIN_DATA(STM_MODE_AF_PP, GPIO_PULLUP, GPIO_AF2_USB)}, // USB_NOE
257-
{NC, NC, 0}
258-
};
33+
#include "PeripheralPinMaps.h"

targets/TARGET_STM/TARGET_STM32L0/TARGET_NUCLEO_L073RZ/PinNames.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
extern "C" {
3939
#endif
4040

41+
/* If this macro is defined, then constexpr utility functions for pin-map seach can be used. */
42+
#define EXPLICIT_PINMAP_READY 1
43+
4144
typedef enum {
4245
ALT0 = 0x100,
4346
ALT1 = 0x200,

targets/TARGET_STM/TARGET_STM32L0/analogin_device.c

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,30 @@
3636
#include "mbed_error.h"
3737
#include "PeripheralPins.h"
3838

39-
void analogin_init(analogin_t *obj, PinName pin)
39+
#if EXPLICIT_PINMAP_READY
40+
#define ANALOGIN_INIT_DIRECT analogin_init_direct
41+
void analogin_init_direct(analogin_t *obj, const PinMap *pinmap)
42+
#else
43+
#define ANALOGIN_INIT_DIRECT _analogin_init_direct
44+
static void _analogin_init_direct(analogin_t *obj, const PinMap *pinmap)
45+
#endif
4046
{
41-
uint32_t function = (uint32_t)NC;
47+
uint32_t function = (uint32_t)pinmap->function;
48+
49+
// Get the peripheral name from the pin and assign it to the object
50+
obj->handle.Instance = (ADC_TypeDef *)pinmap->peripheral;
4251

4352
// ADC Internal Channels "pins" (Temperature, Vref, Vbat, ...)
4453
// are described in PinNames.h and PeripheralPins.c
4554
// Pin value must be between 0xF0 and 0xFF
46-
if ((pin < 0xF0) || (pin >= 0x100)) {
55+
if ((pinmap->pin < 0xF0) || (pinmap->pin >= 0x100)) {
4756
// Normal channels
48-
// Get the peripheral name from the pin and assign it to the object
49-
obj->handle.Instance = (ADC_TypeDef *)pinmap_peripheral(pin, PinMap_ADC);
50-
// Get the functions (adc channel) from the pin and assign it to the object
51-
function = pinmap_function(pin, PinMap_ADC);
57+
5258
// Configure GPIO
53-
pinmap_pinout(pin, PinMap_ADC);
59+
pin_function(pinmap->pin, pinmap->function);
60+
pin_mode(pinmap->pin, PullNone);
5461
} else {
5562
// Internal channels
56-
obj->handle.Instance = (ADC_TypeDef *)pinmap_peripheral(pin, PinMap_ADC_Internal);
57-
function = pinmap_function(pin, PinMap_ADC_Internal);
5863
// No GPIO configuration for internal channels
5964
}
6065
MBED_ASSERT(obj->handle.Instance != (ADC_TypeDef *)NC);
@@ -63,7 +68,7 @@ void analogin_init(analogin_t *obj, PinName pin)
6368
obj->channel = STM_PIN_CHANNEL(function);
6469

6570
// Save pin number for the read function
66-
obj->pin = pin;
71+
obj->pin = pinmap->pin;
6772

6873
// Configure ADC object structures
6974
obj->handle.State = HAL_ADC_STATE_RESET;
@@ -97,6 +102,24 @@ void analogin_init(analogin_t *obj, PinName pin)
97102
__HAL_ADC_ENABLE(&obj->handle);
98103
}
99104

105+
void analogin_init(analogin_t *obj, PinName pin)
106+
{
107+
int peripheral;
108+
int function;
109+
110+
if ((pin < 0xF0) || (pin >= 0x100)) {
111+
peripheral = (int)pinmap_peripheral(pin, PinMap_ADC);
112+
function = (int)pinmap_find_function(pin, PinMap_ADC);
113+
} else {
114+
peripheral = (int)pinmap_peripheral(pin, PinMap_ADC_Internal);
115+
function = (int)pinmap_find_function(pin, PinMap_ADC_Internal);
116+
}
117+
118+
const PinMap explicit_pinmap = {pin, peripheral, function};
119+
120+
ANALOGIN_INIT_DIRECT(obj, &explicit_pinmap);
121+
}
122+
100123
uint16_t adc_read(analogin_t *obj)
101124
{
102125
ADC_ChannelConfTypeDef sConfig = {0};

targets/TARGET_STM/TARGET_STM32L0/analogout_device.c

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,16 +39,22 @@
3939
static int channel1_used = 0;
4040
static int channel2_used = 0;
4141

42-
void analogout_init(dac_t *obj, PinName pin)
42+
#if EXPLICIT_PINMAP_READY
43+
#define ANALOGOUT_INIT_DIRECT analogout_init_direct
44+
void analogout_init_direct(dac_t *obj, const PinMap *pinmap)
45+
#else
46+
#define ANALOGOUT_INIT_DIRECT _analogout_init_direct
47+
static void _analogout_init_direct(dac_t *obj, const PinMap *pinmap)
48+
#endif
4349
{
4450
DAC_ChannelConfTypeDef sConfig = {0};
4551

4652
// Get the peripheral name from the pin and assign it to the object
47-
obj->dac = (DACName)pinmap_peripheral(pin, PinMap_DAC);
53+
obj->dac = (DACName)pinmap->peripheral;
4854
MBED_ASSERT(obj->dac != (DACName)NC);
4955

5056
// Get the pin function and assign the used channel to the object
51-
uint32_t function = pinmap_function(pin, PinMap_DAC);
57+
uint32_t function = (uint32_t)pinmap->function;
5258
MBED_ASSERT(function != (uint32_t)NC);
5359
switch (STM_PIN_CHANNEL(function)) {
5460
case 1:
@@ -65,10 +71,11 @@ void analogout_init(dac_t *obj, PinName pin)
6571
}
6672

6773
// Configure GPIO
68-
pinmap_pinout(pin, PinMap_DAC);
74+
pin_function(pinmap->pin, pinmap->function);
75+
pin_mode(pinmap->pin, PullNone);
6976

7077
// Save the pin for future use
71-
obj->pin = pin;
78+
obj->pin = pinmap->pin;
7279

7380
// Enable DAC clock
7481
__DAC_CLK_ENABLE();
@@ -97,6 +104,16 @@ void analogout_init(dac_t *obj, PinName pin)
97104
analogout_write_u16(obj, 0);
98105
}
99106

107+
void analogout_init(dac_t *obj, PinName pin)
108+
{
109+
int peripheral = (int)pinmap_peripheral(pin, PinMap_DAC);
110+
int function = (int)pinmap_find_function(pin, PinMap_DAC);
111+
112+
const PinMap explicit_pinmap = {pin, peripheral, function};
113+
114+
ANALOGOUT_INIT_DIRECT(obj, &explicit_pinmap);
115+
}
116+
100117
void analogout_free(dac_t *obj)
101118
{
102119
// Reset DAC and disable clock

targets/TARGET_STM/TARGET_STM32L0/common_objects.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ struct i2c_s {
9696
int hz;
9797
PinName sda;
9898
PinName scl;
99+
int sda_func;
100+
int scl_func;
99101
IRQn_Type event_i2cIRQ;
100102
IRQn_Type error_i2cIRQ;
101103
uint32_t XferOperation;

0 commit comments

Comments
 (0)