Skip to content

Commit 42bc1a4

Browse files
authored
Merge pull request #1890 from bcostm/fix_f0_force_serial_reset
[STM32F0] Add USART force/release Reset at Init phase
2 parents b79e95a + 7e486d8 commit 42bc1a4

File tree

1 file changed

+24
-8
lines changed

1 file changed

+24
-8
lines changed

hal/targets/hal/TARGET_STM/TARGET_STM32F0/serial_api.c

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,55 +101,71 @@ void serial_init(serial_t *obj, PinName tx, PinName rx) {
101101

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

108110
#if defined USART2_BASE
109111
if (obj->uart == UART_2) {
110-
__USART2_CLK_ENABLE();
112+
__HAL_RCC_USART2_FORCE_RESET();
113+
__HAL_RCC_USART2_RELEASE_RESET();
114+
__HAL_RCC_USART2_CLK_ENABLE();
111115
obj->index = 1;
112116
}
113117
#endif
114118

115119
#if defined USART3_BASE
116120
if (obj->uart == UART_3) {
117-
__USART3_CLK_ENABLE();
121+
__HAL_RCC_USART3_FORCE_RESET();
122+
__HAL_RCC_USART3_RELEASE_RESET();
123+
__HAL_RCC_USART3_CLK_ENABLE();
118124
obj->index = 2;
119125
}
120126
#endif
121127

122128
#if defined USART4_BASE
123129
if (obj->uart == UART_4) {
124-
__USART4_CLK_ENABLE();
130+
__HAL_RCC_USART4_FORCE_RESET();
131+
__HAL_RCC_USART4_RELEASE_RESET();
132+
__HAL_RCC_USART4_CLK_ENABLE();
125133
obj->index = 3;
126134
}
127135
#endif
128136

129137
#if defined USART5_BASE
130138
if (obj->uart == UART_5) {
131-
__USART5_CLK_ENABLE();
139+
__HAL_RCC_USART5_FORCE_RESET();
140+
__HAL_RCC_USART5_RELEASE_RESET();
141+
__HAL_RCC_USART5_CLK_ENABLE();
132142
obj->index = 4;
133143
}
134144
#endif
135145

136146
#if defined USART6_BASE
137147
if (obj->uart == UART_6) {
138-
__USART6_CLK_ENABLE();
148+
__HAL_RCC_USART6_FORCE_RESET();
149+
__HAL_RCC_USART6_RELEASE_RESET();
150+
__HAL_RCC_USART6_CLK_ENABLE();
139151
obj->index = 5;
140152
}
141153
#endif
142154

143155
#if defined USART7_BASE
144156
if (obj->uart == UART_7) {
145-
__USART7_CLK_ENABLE();
157+
__HAL_RCC_USART7_FORCE_RESET();
158+
__HAL_RCC_USART7_RELEASE_RESET();
159+
__HAL_RCC_USART7_CLK_ENABLE();
146160
obj->index = 6;
147161
}
148162
#endif
149163

150164
#if defined USART8_BASE
151165
if (obj->uart == UART_8) {
152-
__USART8_CLK_ENABLE();
166+
__HAL_RCC_USART8_FORCE_RESET();
167+
__HAL_RCC_USART8_RELEASE_RESET();
168+
__HAL_RCC_USART8_CLK_ENABLE();
153169
obj->index = 7;
154170
}
155171
#endif

0 commit comments

Comments
 (0)