diff options
| author | hathach <[email protected]> | 2026-04-03 19:38:07 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2026-04-03 19:38:07 +0700 |
| commit | 81efb78d1655dcab31da5e03fd7e22e91491d186 (patch) | |
| tree | 0ea8eafc8730146e3a29f3e0349bfa3d02fa635a /hw/bsp/stm32f3 | |
| parent | 3ed9d6517485611b040ecdc4e5d327b6e86f3dee (diff) | |
update stm32 to use better uart id
Diffstat (limited to 'hw/bsp/stm32f3')
| -rw-r--r-- | hw/bsp/stm32f3/family.c | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/hw/bsp/stm32f3/family.c b/hw/bsp/stm32f3/family.c index 8cee5f8c0..0864d0fad 100644 --- a/hw/bsp/stm32f3/family.c +++ b/hw/bsp/stm32f3/family.c @@ -33,6 +33,25 @@ #include "common/tusb_fifo.h" #include "board.h" +#ifdef UART_ID + #if UART_ID == 1 + #define USARTn USART1 + #define USARTn_IRQn USART1_IRQn + #define USARTn_IRQHandler USART1_IRQHandler + #define UARTn_CLK_ENABLE __HAL_RCC_USART1_CLK_ENABLE + #elif UART_ID == 2 + #define USARTn USART2 + #define USARTn_IRQn USART2_IRQn + #define USARTn_IRQHandler USART2_IRQHandler + #define UARTn_CLK_ENABLE __HAL_RCC_USART2_CLK_ENABLE + #elif UART_ID == 3 + #define USARTn USART3 + #define USARTn_IRQn USART3_IRQn + #define USARTn_IRQHandler USART3_IRQHandler + #define UARTn_CLK_ENABLE __HAL_RCC_USART3_CLK_ENABLE + #endif +#endif + //--------------------------------------------------------------------+ // Forward USB interrupt events to TinyUSB IRQ Handler //--------------------------------------------------------------------+ @@ -64,9 +83,9 @@ void USBWakeUp_RMP_IRQHandler(void) { //--------------------------------------------------------------------+ // MACRO TYPEDEF CONSTANT ENUM //--------------------------------------------------------------------+ -#ifdef UART_DEV +#ifdef UART_ID static UART_HandleTypeDef UartHandle = { - .Instance = UART_DEV, + .Instance = USARTn, .Init = { .BaudRate = CFG_BOARD_UART_BAUDRATE, .WordLength = UART_WORDLENGTH_8B, @@ -83,26 +102,16 @@ static uint8_t uart_rx_ff_buf[32]; static tu_fifo_t uart_rx_ff; // F3 uses new USART IP (ISR/RDR/TDR/ICR) — same as F7 -static void uart_rx_isr(void) { - uint32_t isr = UART_DEV->ISR; +void USARTn_IRQHandler(void) { + uint32_t isr = USARTn->ISR; if (isr & USART_ISR_RXNE) { - uint8_t byte = (uint8_t) UART_DEV->RDR; + uint8_t byte = (uint8_t) USARTn->RDR; tu_fifo_write(&uart_rx_ff, &byte); } if (isr & (USART_ISR_ORE | USART_ISR_FE | USART_ISR_NE | USART_ISR_PE)) { - UART_DEV->ICR = USART_ICR_ORECF | USART_ICR_FECF | USART_ICR_NCF | USART_ICR_PECF; + USARTn->ICR = USART_ICR_ORECF | USART_ICR_FECF | USART_ICR_NCF | USART_ICR_PECF; } } - -void USART1_IRQHandler(void) { - uart_rx_isr(); -} -void USART2_IRQHandler(void) { - uart_rx_isr(); -} -void USART3_IRQHandler(void) { - uart_rx_isr(); -} #endif //--------------------------------------------------------------------+ @@ -154,15 +163,12 @@ void board_init(void) { // Enable USB clock __HAL_RCC_USB_CLK_ENABLE(); -#ifdef UART_DEV +#ifdef UART_ID HAL_UART_Init(&UartHandle); tu_fifo_config(&uart_rx_ff, uart_rx_ff_buf, sizeof(uart_rx_ff_buf), false); - UART_DEV->CR1 |= USART_CR1_RXNEIE; - const IRQn_Type uart_irqn = (UART_DEV == USART1) ? USART1_IRQn - : (UART_DEV == USART2) ? USART2_IRQn - : USART3_IRQn; - NVIC_SetPriority(uart_irqn, (1 << __NVIC_PRIO_BITS) - 1); - NVIC_EnableIRQ(uart_irqn); + USARTn->CR1 |= USART_CR1_RXNEIE; + NVIC_SetPriority(USARTn_IRQn, (1 << __NVIC_PRIO_BITS) - 1); + NVIC_EnableIRQ(USARTn_IRQn); #endif } @@ -193,7 +199,7 @@ size_t board_get_unique_id(uint8_t id[], size_t max_len) { } int board_uart_read(uint8_t* buf, int len) { -#ifdef UART_DEV +#ifdef UART_ID return (int) tu_fifo_read_n(&uart_rx_ff, buf, (uint16_t) len); #else (void) buf; (void) len; @@ -202,7 +208,7 @@ int board_uart_read(uint8_t* buf, int len) { } int board_uart_write(void const* buf, int len) { -#ifdef UART_DEV +#ifdef UART_ID const uint8_t *p = (const uint8_t *) buf; int count = 0; while (count < len) { |
