Skip to content

Commit 33deb67

Browse files
committed
Add harder resets to UART
1 parent ec32731 commit 33deb67

File tree

1 file changed

+12
-0
lines changed
  • ports/stm32f4/common-hal/busio

1 file changed

+12
-0
lines changed

ports/stm32f4/common-hal/busio/UART.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
100100
#ifdef USART1
101101
if(USARTx==USART1) {
102102
reserved_uart[0] = true;
103+
__HAL_RCC_USART1_FORCE_RESET();
104+
__HAL_RCC_USART1_RELEASE_RESET();
103105
__HAL_RCC_USART1_CLK_ENABLE();
104106
self->irq = USART1_IRQn;
105107
//HAL_NVIC_SetPriority(USART1_IRQn, 2,1);
@@ -111,6 +113,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
111113
#ifdef USART2
112114
if(USARTx==USART2) {
113115
reserved_uart[1] = true;
116+
__HAL_RCC_USART2_FORCE_RESET();
117+
__HAL_RCC_USART2_RELEASE_RESET();
114118
__HAL_RCC_USART2_CLK_ENABLE();
115119
self->irq = USART2_IRQn;
116120
//HAL_NVIC_SetPriority(USART2_IRQn, 2,1);
@@ -122,6 +126,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
122126
#ifdef USART3
123127
if(USARTx==USART3) {
124128
reserved_uart[2] = true;
129+
__HAL_RCC_USART3_FORCE_RESET();
130+
__HAL_RCC_USART3_RELEASE_RESET();
125131
__HAL_RCC_USART3_CLK_ENABLE();
126132
self->irq = USART3_IRQn;
127133
//HAL_NVIC_SetPriority(USART3_IRQn, 2,1);
@@ -133,6 +139,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
133139
#ifdef UART4
134140
if(USARTx==UART4) {
135141
reserved_uart[3] = true;
142+
__HAL_RCC_UART4_FORCE_RESET();
143+
__HAL_RCC_UART4_RELEASE_RESET();
136144
__HAL_RCC_UART4_CLK_ENABLE();
137145
self->irq = UART4_IRQn;
138146
//HAL_NVIC_SetPriority(UART4_IRQn, 2,1);
@@ -144,6 +152,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
144152
#ifdef UART5
145153
if(USARTx==UART5) {
146154
reserved_uart[4] = true;
155+
__HAL_RCC_UART5_FORCE_RESET();
156+
__HAL_RCC_UART5_RELEASE_RESET();
147157
__HAL_RCC_UART5_CLK_ENABLE();
148158
self->irq = UART5_IRQn;
149159
//NVIC_SetPriority(UART5_IRQn, 7);
@@ -155,6 +165,8 @@ STATIC void uart_clk_irq_enable(busio_uart_obj_t *self, USART_TypeDef * USARTx)
155165
#ifdef USART6
156166
if(USARTx==USART6) {
157167
reserved_uart[5] = true;
168+
__HAL_RCC_USART6_FORCE_RESET();
169+
__HAL_RCC_USART6_RELEASE_RESET();
158170
__HAL_RCC_USART6_CLK_ENABLE();
159171
self->irq = USART6_IRQn;
160172
//NVIC_SetPriority(USART6_IRQn, 7);

0 commit comments

Comments
 (0)