Skip to content

Commit 751485f

Browse files
committed
stmhal: Add support for USART1 and conditional pins in make-pins.py.
Thanks to Dave Hylands for the patch.
1 parent a632037 commit 751485f

3 files changed

Lines changed: 33 additions & 10 deletions

File tree

stmhal/Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@ GEN_CDCINF_HEADER = $(HEADER_BUILD)/pybcdc_inf.h
310310
# which source files might need it.
311311
$(OBJ): | $(HEADER_BUILD)/pins.h
312312

313+
# With conditional pins, we may need to regenerate qstrdefs.h when config
314+
# options change.
315+
$(HEADER_BUILD)/qstrdefs.generated.h: boards/$(BOARD)/mpconfigboard.h
316+
313317
$(BUILD)/main.o: $(GEN_CDCINF_HEADER)
314318

315319
# Use a pattern rule here so that make will only call make-pins.py once to make

stmhal/boards/make-pins.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
'UART' : 'MICROPY_HW_UART{num}_PORT',
2525
'UART5' : 'MICROPY_HW_UART5_TX_PORT',
2626
'USART' : 'MICROPY_HW_UART{num}_PORT',
27+
'USART1': 'MICROPY_HW_UART1_TX_PORT',
2728
}
2829

2930
def parse_port_pin(name_str):
@@ -55,20 +56,22 @@ def conditional_var(name_num):
5556
# Try the specific instance first. For example, if name_num is UART4_RX
5657
# then try UART4 first, and then try UART second.
5758
name, num = split_name_num(name_num)
58-
var = None
59+
var = []
60+
if name in CONDITIONAL_VAR:
61+
var.append(CONDITIONAL_VAR[name].format(num=num))
5962
if name_num in CONDITIONAL_VAR:
60-
var = CONDITIONAL_VAR[name_num]
61-
elif name in CONDITIONAL_VAR:
62-
var = CONDITIONAL_VAR[name]
63-
if var:
64-
return var.format(num=num)
63+
var.append(CONDITIONAL_VAR[name_num])
64+
return var
6565

6666
def print_conditional_if(cond_var, file=None):
6767
if cond_var:
68-
if cond_var.find('ENABLE') >= 0:
69-
print('#if defined({0}) && {0}'.format(cond_var), file=file)
70-
else:
71-
print('#if defined({0})'.format(cond_var), file=file)
68+
cond_str = []
69+
for var in cond_var:
70+
if var.find('ENABLE') >= 0:
71+
cond_str.append('(defined({0}) && {0})'.format(var))
72+
else:
73+
cond_str.append('defined({0})'.format(var))
74+
print('#if ' + ' || '.join(cond_str), file=file)
7275

7376
def print_conditional_endif(cond_var, file=None):
7477
if cond_var:

stmhal/uart.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,22 @@ STATIC bool uart_init2(pyb_uart_obj_t *uart_obj) {
132132
break;
133133
#endif
134134

135+
#if defined(MICROPY_HW_UART1_TX_PORT) && \
136+
defined(MICROPY_HW_UART1_TX_PIN) && \
137+
defined(MICROPY_HW_UART1_RX_PORT) && \
138+
defined(MICROPY_HW_UART1_RX_PIN)
139+
case PYB_UART_1:
140+
UARTx = USART1;
141+
irqn = USART1_IRQn;
142+
GPIO_AF_UARTx = GPIO_AF7_USART1;
143+
GPIO_Port = MICROPY_HW_UART1_TX_PORT;
144+
GPIO_Pin = MICROPY_HW_UART1_TX_PIN;
145+
GPIO_Port2 = MICROPY_HW_UART1_RX_PORT;
146+
GPIO_Pin2 = MICROPY_HW_UART1_RX_PIN;
147+
__USART1_CLK_ENABLE();
148+
break;
149+
#endif
150+
135151
#if defined(MICROPY_HW_UART2_PORT) && defined(MICROPY_HW_UART2_PINS)
136152
// USART2 is on PA2/PA3 (CTS,RTS,CK on PA0,PA1,PA4), PD5/PD6 (CK on PD7)
137153
case PYB_UART_2:

0 commit comments

Comments
 (0)