@@ -101,31 +101,43 @@ void serial_init(serial_t *obj, PinName tx, PinName rx)
101
101
102
102
// Enable UART clock
103
103
if (obj -> uart == UART_1 ) {
104
+ __HAL_RCC_USART1_FORCE_RESET ();
105
+ __HAL_RCC_USART1_RELEASE_RESET ();
104
106
__HAL_RCC_USART1_CLK_ENABLE ();
105
107
obj -> index = 0 ;
106
108
}
107
109
108
110
if (obj -> uart == UART_2 ) {
111
+ __HAL_RCC_USART2_FORCE_RESET ();
112
+ __HAL_RCC_USART2_RELEASE_RESET ();
109
113
__HAL_RCC_USART2_CLK_ENABLE ();
110
114
obj -> index = 1 ;
111
115
}
112
116
113
117
if (obj -> uart == UART_3 ) {
118
+ __HAL_RCC_USART3_FORCE_RESET ();
119
+ __HAL_RCC_USART3_RELEASE_RESET ();
114
120
__HAL_RCC_USART3_CLK_ENABLE ();
115
121
obj -> index = 2 ;
116
122
}
117
123
118
124
if (obj -> uart == UART_4 ) {
125
+ __HAL_RCC_UART4_FORCE_RESET ();
126
+ __HAL_RCC_UART4_RELEASE_RESET ();
119
127
__HAL_RCC_UART4_CLK_ENABLE ();
120
128
obj -> index = 3 ;
121
129
}
122
130
123
131
if (obj -> uart == UART_5 ) {
132
+ __HAL_RCC_UART5_FORCE_RESET ();
133
+ __HAL_RCC_UART5_RELEASE_RESET ();
124
134
__HAL_RCC_UART5_CLK_ENABLE ();
125
135
obj -> index = 4 ;
126
136
}
127
137
128
138
if (obj -> uart == LPUART_1 ) {
139
+ __HAL_RCC_LPUART1_FORCE_RESET ();
140
+ __HAL_RCC_LPUART1_RELEASE_RESET ();
129
141
__HAL_RCC_LPUART1_CLK_ENABLE ();
130
142
obj -> baudrate = 38400 ; // Maximum peripheral clock is 4096 x BR -> This is the minimum BR with 80 MHz peripheral clock.
131
143
obj -> index = 5 ;
0 commit comments