@@ -117,94 +117,88 @@ STATIC bool uart_init2(pyb_uart_obj_t *uart_obj) {
117
117
GPIO_TypeDef * GPIO_Port = NULL ;
118
118
119
119
switch (uart_obj -> uart_id ) {
120
+ #if defined(MICROPY_HW_UART1_PORT ) && defined(MICROPY_HW_UART1_PINS )
120
121
// USART1 is on PA9/PA10 (CK on PA8), PB6/PB7
121
122
case PYB_UART_1 :
122
123
UARTx = USART1 ;
123
124
irqn = USART1_IRQn ;
124
125
GPIO_AF_UARTx = GPIO_AF7_USART1 ;
125
-
126
- #if defined (PYBV4 ) || defined(PYBV10 )
127
- GPIO_Port = GPIOB ;
128
- GPIO_Pin = GPIO_PIN_6 | GPIO_PIN_7 ;
129
- #else
130
- GPIO_Port = GPIOA ;
131
- GPIO_Pin = GPIO_PIN_9 | GPIO_PIN_10 ;
132
- #endif
133
-
126
+ GPIO_Port = MICROPY_HW_UART1_PORT ;
127
+ GPIO_Pin = MICROPY_HW_UART1_PINS ;
134
128
__USART1_CLK_ENABLE ();
135
129
break ;
130
+ #endif
136
131
132
+ #if defined(MICROPY_HW_UART2_PORT ) && defined(MICROPY_HW_UART2_PINS )
137
133
// USART2 is on PA2/PA3 (CTS,RTS,CK on PA0,PA1,PA4), PD5/PD6 (CK on PD7)
138
134
case PYB_UART_2 :
139
135
UARTx = USART2 ;
140
136
irqn = USART2_IRQn ;
141
137
GPIO_AF_UARTx = GPIO_AF7_USART2 ;
142
-
143
- GPIO_Port = GPIOA ;
144
- GPIO_Pin = GPIO_PIN_2 | GPIO_PIN_3 ;
145
-
138
+ GPIO_Port = MICROPY_HW_UART2_PORT ;
139
+ GPIO_Pin = MICROPY_HW_UART2_PINS ;
140
+ #if defined(MICROPY_HW_UART2_RTS )
146
141
if (uart_obj -> uart .Init .HwFlowCtl & UART_HWCONTROL_RTS ) {
147
- GPIO_Pin |= GPIO_PIN_1 ;
142
+ GPIO_Pin |= MICROPY_HW_UART2_RTS ;
148
143
}
144
+ #endif
145
+ #if defined(MICROPY_HW_UART2_CTS )
149
146
if (uart_obj -> uart .Init .HwFlowCtl & UART_HWCONTROL_CTS ) {
150
- GPIO_Pin |= GPIO_PIN_0 ;
147
+ GPIO_Pin |= MICROPY_HW_UART2_CTS ;
151
148
}
152
-
149
+ #endif
153
150
__USART2_CLK_ENABLE ();
154
151
break ;
152
+ #endif
155
153
156
- #if defined(USART3 )
154
+ #if defined(USART3 ) && defined( MICROPY_HW_UART3_PORT ) && defined( MICROPY_HW_UART3_PINS )
157
155
// USART3 is on PB10/PB11 (CK,CTS,RTS on PB12,PB13,PB14), PC10/PC11 (CK on PC12), PD8/PD9 (CK on PD10)
158
156
case PYB_UART_3 :
159
157
UARTx = USART3 ;
160
158
irqn = USART3_IRQn ;
161
159
GPIO_AF_UARTx = GPIO_AF7_USART3 ;
162
-
163
- #if defined(PYBV3 ) || defined(PYBV4 ) | defined(PYBV10 )
164
- GPIO_Port = GPIOB ;
165
- GPIO_Pin = GPIO_PIN_10 | GPIO_PIN_11 ;
166
-
160
+ GPIO_Port = MICROPY_HW_UART3_PORT ;
161
+ GPIO_Pin = MICROPY_HW_UART3_PINS ;
162
+ #if defined(MICROPY_HW_UART3_RTS )
167
163
if (uart_obj -> uart .Init .HwFlowCtl & UART_HWCONTROL_RTS ) {
168
- GPIO_Pin |= GPIO_PIN_14 ;
164
+ GPIO_Pin |= MICROPY_HW_UART3_RTS ;
169
165
}
166
+ #endif
167
+ #if defined(MICROPY_HW_UART3_CTS )
170
168
if (uart_obj -> uart .Init .HwFlowCtl & UART_HWCONTROL_CTS ) {
171
- GPIO_Pin |= GPIO_PIN_13 ;
169
+ GPIO_Pin |= MICROPY_HW_UART3_CTS ;
172
170
}
173
- #else
174
- GPIO_Port = GPIOD ;
175
- GPIO_Pin = GPIO_PIN_8 | GPIO_PIN_9 ;
176
- #endif
171
+ #endif
177
172
__USART3_CLK_ENABLE ();
178
173
break ;
179
174
#endif
180
175
181
- #if defined(UART4 )
176
+ #if defined(UART4 ) && defined( MICROPY_HW_UART4_PORT ) && defined( MICROPY_HW_UART4_PINS )
182
177
// UART4 is on PA0/PA1, PC10/PC11
183
178
case PYB_UART_4 :
184
179
UARTx = UART4 ;
185
180
irqn = UART4_IRQn ;
186
181
GPIO_AF_UARTx = GPIO_AF8_UART4 ;
187
-
188
- GPIO_Port = GPIOA ;
189
- GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1 ;
190
-
182
+ GPIO_Port = MICROPY_HW_UART4_PORT ;
183
+ GPIO_Pin = MICROPY_HW_UART4_PINS ;
191
184
__UART4_CLK_ENABLE ();
192
185
break ;
193
186
#endif
194
187
188
+ #if defined(MICROPY_HW_UART6_PORT ) && defined(MICROPY_HW_UART6_PINS )
195
189
// USART6 is on PC6/PC7 (CK on PC8)
196
190
case PYB_UART_6 :
197
191
UARTx = USART6 ;
198
192
irqn = USART6_IRQn ;
199
193
GPIO_AF_UARTx = GPIO_AF8_USART6 ;
200
-
201
- GPIO_Port = GPIOC ;
202
- GPIO_Pin = GPIO_PIN_6 | GPIO_PIN_7 ;
203
-
194
+ GPIO_Port = MICROPY_HW_UART6_PORT ;
195
+ GPIO_Pin = MICROPY_HW_UART6_PINS ;
204
196
__USART6_CLK_ENABLE ();
205
197
break ;
198
+ #endif
206
199
207
200
default :
201
+ // UART does not exist or is not configured for this board
208
202
return false;
209
203
}
210
204
0 commit comments