Skip to content

Commit 6ebb2e6

Browse files
committed
[STM32L1XX] Reset UART on init
1 parent 3243b38 commit 6ebb2e6

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32L1/serial_api.c

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ static void init_uart(serial_t *obj)
6666
UartHandle.Init.Mode = UART_MODE_TX_RX;
6767
}
6868

69-
// Fix because HAL_RCC_GetHCLKFreq() don't update anymore SystemCoreClock
69+
// Fix because HAL_RCC_GetHCLKFreq() don't update anymore SystemCoreClock
7070
SystemCoreClockUpdate();
7171

7272
HAL_UART_Init(&UartHandle);
@@ -84,28 +84,38 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
8484

8585
// Enable UART clock
8686
if (obj->uart == UART_1) {
87+
__HAL_RCC_USART1_FORCE_RESET();
88+
__HAL_RCC_USART1_RELEASE_RESET();
8789
__USART1_CLK_ENABLE();
8890
obj->index = 0;
8991
}
9092

9193
if (obj->uart == UART_2) {
94+
__HAL_RCC_USART2_FORCE_RESET();
95+
__HAL_RCC_USART2_RELEASE_RESET();
9296
__USART2_CLK_ENABLE();
9397
obj->index = 1;
9498
}
9599

96100
if (obj->uart == UART_3) {
101+
__HAL_RCC_USART3_FORCE_RESET();
102+
__HAL_RCC_USART3_RELEASE_RESET();
97103
__USART3_CLK_ENABLE();
98104
obj->index = 2;
99105
}
100106

101107
#if defined(UART4_BASE)
102108
if (obj->uart == UART_4) {
109+
__HAL_RCC_UART4_FORCE_RESET();
110+
__HAL_RCC_UART4_RELEASE_RESET();
103111
__UART4_CLK_ENABLE();
104112
obj->index = 3;
105113
}
106114
#endif
107115
#if defined(UART5_BASE)
108116
if (obj->uart == UART_5) {
117+
__HAL_RCC_UART5_FORCE_RESET();
118+
__HAL_RCC_UART5_RELEASE_RESET();
109119
__UART5_CLK_ENABLE();
110120
obj->index = 4;
111121
}

0 commit comments

Comments
 (0)