Skip to content

Commit b79e95a

Browse files
authored
Merge pull request #1894 from bcostm/fix_f3_force_serial_reset
[STM32F3] Add USART force/release Reset at Init phase
2 parents 39acdd6 + ec36ce7 commit b79e95a

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32F3/serial_api.c

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

8686
// Enable USART clock + switch to SystemClock
8787
if (obj->uart == UART_1) {
88+
__USART1_FORCE_RESET();
89+
__USART1_RELEASE_RESET();
8890
__USART1_CLK_ENABLE();
8991
__HAL_RCC_USART1_CONFIG(RCC_USART1CLKSOURCE_SYSCLK);
9092
obj->index = 0;
9193
}
94+
#if defined(USART2_BASE)
9295
if (obj->uart == UART_2) {
96+
__USART2_FORCE_RESET();
97+
__USART2_RELEASE_RESET();
9398
__USART2_CLK_ENABLE();
9499
__HAL_RCC_USART2_CONFIG(RCC_USART2CLKSOURCE_SYSCLK);
95100
obj->index = 1;
96101
}
102+
#endif
97103
#if defined(USART3_BASE)
98104
if (obj->uart == UART_3) {
105+
__USART3_FORCE_RESET();
106+
__USART3_RELEASE_RESET();
99107
__USART3_CLK_ENABLE();
100108
__HAL_RCC_USART3_CONFIG(RCC_USART3CLKSOURCE_SYSCLK);
101109
obj->index = 2;
102110
}
103111
#endif
104112
#if defined(UART4_BASE)
105113
if (obj->uart == UART_4) {
114+
__UART4_FORCE_RESET();
115+
__UART4_RELEASE_RESET();
106116
__UART4_CLK_ENABLE();
107117
__HAL_RCC_UART4_CONFIG(RCC_UART4CLKSOURCE_SYSCLK);
108118
obj->index = 3;
109119
}
110120
#endif
111121
#if defined(UART5_BASE)
112122
if (obj->uart == UART_5) {
123+
__HAL_RCC_UART5_FORCE_RESET();
124+
__HAL_RCC_UART5_RELEASE_RESET();
113125
__UART5_CLK_ENABLE();
114126
__HAL_RCC_UART5_CONFIG(RCC_UART5CLKSOURCE_SYSCLK);
115127
obj->index = 4;

0 commit comments

Comments
 (0)