Skip to content

Commit 5d63e28

Browse files
authored
Merge pull request RIOT-OS#11425 from OTAkeys/pr/fix_stm32_uart_flow_control
cpu/stm32_common: set RTS when uart is off
2 parents 110a410 + e9fd193 commit 5d63e28

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

cpu/stm32_common/periph/uart.c

+16
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,16 @@ void uart_poweron(uart_t uart)
334334
if (isr_ctx[uart].rx_cb) {
335335
pm_block(STM32_PM_STOP);
336336
}
337+
#endif
338+
#ifdef MODULE_STM32_PERIPH_UART_HW_FC
339+
if (uart_config[uart].cts_pin != GPIO_UNDEF) {
340+
gpio_init(uart_config[uart].rts_pin, GPIO_OUT);
341+
#ifdef CPU_FAM_STM32F1
342+
gpio_init_af(uart_config[uart].rts_pin, GPIO_AF_OUT_PP);
343+
#else
344+
gpio_init_af(uart_config[uart].rts_pin, uart_config[uart].rts_af);
345+
#endif
346+
}
337347
#endif
338348
periph_clk_en(uart_config[uart].bus, uart_config[uart].rcc_mask);
339349
}
@@ -343,6 +353,12 @@ void uart_poweroff(uart_t uart)
343353
assert(uart < UART_NUMOF);
344354

345355
periph_clk_dis(uart_config[uart].bus, uart_config[uart].rcc_mask);
356+
#ifdef MODULE_STM32_PERIPH_UART_HW_FC
357+
if (uart_config[uart].cts_pin != GPIO_UNDEF) {
358+
gpio_init(uart_config[uart].rts_pin, GPIO_OUT);
359+
gpio_set(uart_config[uart].rts_pin);
360+
}
361+
#endif
346362
#ifdef STM32_PM_STOP
347363
if (isr_ctx[uart].rx_cb) {
348364
pm_unblock(STM32_PM_STOP);

0 commit comments

Comments
 (0)