@@ -49,31 +49,43 @@ void uart_reset(void) {
49
49
#ifdef USART1
50
50
reserved_uart [0 ] = false;
51
51
MP_STATE_PORT (cpy_uart_obj_all )[0 ] = NULL ;
52
+ __HAL_RCC_USART1_FORCE_RESET ();
53
+ __HAL_RCC_USART1_RELEASE_RESET ();
52
54
__HAL_RCC_USART1_CLK_DISABLE ();
53
55
#endif
54
56
#ifdef USART2
55
57
reserved_uart [1 ] = false;
56
58
MP_STATE_PORT (cpy_uart_obj_all )[1 ] = NULL ;
59
+ __HAL_RCC_USART2_FORCE_RESET ();
60
+ __HAL_RCC_USART2_RELEASE_RESET ();
57
61
__HAL_RCC_USART2_CLK_DISABLE ();
58
62
#endif
59
63
#ifdef USART3
60
64
reserved_uart [2 ] = false;
61
65
MP_STATE_PORT (cpy_uart_obj_all )[2 ] = NULL ;
66
+ __HAL_RCC_USART3_FORCE_RESET ();
67
+ __HAL_RCC_USART3_RELEASE_RESET ();
62
68
__HAL_RCC_USART3_CLK_DISABLE ();
63
69
#endif
64
70
#ifdef UART4
65
71
reserved_uart [3 ] = false;
66
72
MP_STATE_PORT (cpy_uart_obj_all )[3 ] = NULL ;
73
+ __HAL_RCC_UART4_FORCE_RESET ();
74
+ __HAL_RCC_UART4_RELEASE_RESET ();
67
75
__HAL_RCC_UART4_CLK_DISABLE ();
68
76
#endif
69
77
#ifdef UART5
70
78
reserved_uart [4 ] = false;
71
79
MP_STATE_PORT (cpy_uart_obj_all )[4 ] = NULL ;
80
+ __HAL_RCC_UART5_FORCE_RESET ();
81
+ __HAL_RCC_UART5_RELEASE_RESET ();
72
82
__HAL_RCC_UART5_CLK_DISABLE ();
73
83
#endif
74
84
#ifdef USART6
75
85
reserved_uart [5 ] = false;
76
86
MP_STATE_PORT (cpy_uart_obj_all )[5 ] = NULL ;
87
+ __HAL_RCC_USART6_FORCE_RESET ();
88
+ __HAL_RCC_USART6_RELEASE_RESET ();
77
89
__HAL_RCC_USART6_CLK_DISABLE ();
78
90
#endif
79
91
//TODO: this technically needs to go to 10 to support F413. Any way to condense?
@@ -302,6 +314,14 @@ void common_hal_busio_uart_construct(busio_uart_obj_t *self,
302
314
errflag = 0 ;
303
315
rxflag = 0 ;
304
316
bsyflag = 0 ;
317
+
318
+ //interrupt debuggery
319
+ GPIO_InitStruct .Pin = pin_mask (7 );
320
+ GPIO_InitStruct .Mode = GPIO_MODE_OUTPUT_PP ;
321
+ GPIO_InitStruct .Pull = GPIO_NOPULL ;
322
+ GPIO_InitStruct .Speed = GPIO_SPEED_FREQ_LOW ;
323
+ HAL_GPIO_Init (pin_port (2 ), & GPIO_InitStruct );
324
+ HAL_GPIO_WritePin (pin_port (2 ),pin_mask (7 ),0 );
305
325
}
306
326
307
327
bool common_hal_busio_uart_deinited (busio_uart_obj_t * self ) {
@@ -466,6 +486,7 @@ STATIC void call_hal_irq(int uart_num) {
466
486
if (context != NULL ) {
467
487
HAL_NVIC_ClearPendingIRQ (context -> irq );
468
488
HAL_UART_IRQHandler (& context -> handle );
489
+ HAL_GPIO_TogglePin (pin_port (2 ),pin_mask (7 ));
469
490
}
470
491
}
471
492
0 commit comments