Skip to content

Commit 92688ed

Browse files
committed
[STM32L4XX] Reset UART on init
1 parent 2f29b9a commit 92688ed

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32L4/serial_api.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,31 +101,43 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
101101

102102
// Enable UART clock
103103
if (obj->uart == UART_1) {
104+
__HAL_RCC_USART1_FORCE_RESET();
105+
__HAL_RCC_USART1_RELEASE_RESET();
104106
__HAL_RCC_USART1_CLK_ENABLE();
105107
obj->index = 0;
106108
}
107109

108110
if (obj->uart == UART_2) {
111+
__HAL_RCC_USART2_FORCE_RESET();
112+
__HAL_RCC_USART2_RELEASE_RESET();
109113
__HAL_RCC_USART2_CLK_ENABLE();
110114
obj->index = 1;
111115
}
112116

113117
if (obj->uart == UART_3) {
118+
__HAL_RCC_USART3_FORCE_RESET();
119+
__HAL_RCC_USART3_RELEASE_RESET();
114120
__HAL_RCC_USART3_CLK_ENABLE();
115121
obj->index = 2;
116122
}
117123

118124
if (obj->uart == UART_4) {
125+
__HAL_RCC_UART4_FORCE_RESET();
126+
__HAL_RCC_UART4_RELEASE_RESET();
119127
__HAL_RCC_UART4_CLK_ENABLE();
120128
obj->index = 3;
121129
}
122130

123131
if (obj->uart == UART_5) {
132+
__HAL_RCC_UART5_FORCE_RESET();
133+
__HAL_RCC_UART5_RELEASE_RESET();
124134
__HAL_RCC_UART5_CLK_ENABLE();
125135
obj->index = 4;
126136
}
127137

128138
if (obj->uart == LPUART_1) {
139+
__HAL_RCC_LPUART1_FORCE_RESET();
140+
__HAL_RCC_LPUART1_RELEASE_RESET();
129141
__HAL_RCC_LPUART1_CLK_ENABLE();
130142
obj->baudrate = 38400; // Maximum peripheral clock is 4096 x BR -> This is the minimum BR with 80 MHz peripheral clock.
131143
obj->index = 5;

0 commit comments

Comments
 (0)