Skip to content

Commit eebd0e3

Browse files
committed
fix(uart): add missing USART11 and UART12 support
STM32H5 have those instances. Fixes stm32duino#2640. Signed-off-by: Frederic Pillon <[email protected]>
1 parent e5fed33 commit eebd0e3

File tree

1 file changed

+64
-1
lines changed
  • libraries/SrcWrapper/src/stm32

1 file changed

+64
-1
lines changed

libraries/SrcWrapper/src/stm32/uart.c

+64-1
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ typedef enum {
6868
#if defined(UART10_BASE) || defined(USART10_BASE)
6969
UART10_INDEX,
7070
#endif
71+
#if defined(USART11_BASE)
72+
UART11_INDEX,
73+
#endif
74+
#if defined(UART12_BASE)
75+
UART12_INDEX,
76+
#endif
7177
#if defined(LPUART1_BASE)
7278
LPUART1_INDEX,
7379
#endif
@@ -339,7 +345,24 @@ void uart_init(serial_t *obj, uint32_t baudrate, uint32_t databits, uint32_t par
339345
obj->irq = USART10_IRQn;
340346
}
341347
#endif
342-
348+
#if defined(USART11_BASE)
349+
else if (obj->uart == USART11) {
350+
__HAL_RCC_USART11_FORCE_RESET();
351+
__HAL_RCC_USART11_RELEASE_RESET();
352+
__HAL_RCC_USART11_CLK_ENABLE();
353+
obj->index = UART11_INDEX;
354+
obj->irq = USART11_IRQn;
355+
}
356+
#endif
357+
#if defined(UART12_BASE)
358+
else if (obj->uart == UART12) {
359+
__HAL_RCC_UART12_FORCE_RESET();
360+
__HAL_RCC_UART12_RELEASE_RESET();
361+
__HAL_RCC_UART12_CLK_ENABLE();
362+
obj->index = UART12_INDEX;
363+
obj->irq = UART12_IRQn;
364+
}
365+
#endif
343366
/* Configure UART GPIO pins */
344367
#if defined(UART_ADVFEATURE_SWAP_INIT)
345368
uint32_t pin_swap = UART_ADVFEATURE_SWAP_DISABLE;
@@ -660,6 +683,20 @@ void uart_deinit(serial_t *obj)
660683
__HAL_RCC_USART10_RELEASE_RESET();
661684
__HAL_RCC_USART10_CLK_DISABLE();
662685
break;
686+
#endif
687+
#if defined(USART11_BASE)
688+
case UART11_INDEX:
689+
__HAL_RCC_USART11_FORCE_RESET();
690+
__HAL_RCC_USART11_RELEASE_RESET();
691+
__HAL_RCC_USART11_CLK_DISABLE();
692+
break;
693+
#endif
694+
#if defined(UART12_BASE)
695+
case UART12_INDEX:
696+
__HAL_RCC_UART12_FORCE_RESET();
697+
__HAL_RCC_UART12_RELEASE_RESET();
698+
__HAL_RCC_UART12_CLK_DISABLE();
699+
break;
663700
#endif
664701
}
665702

@@ -1280,6 +1317,32 @@ void USART10_IRQHandler(void)
12801317
}
12811318
#endif
12821319

1320+
/**
1321+
* @brief USART 11 IRQ handler
1322+
* @param None
1323+
* @retval None
1324+
*/
1325+
#if defined(USART11_BASE)
1326+
void USART11_IRQHandler(void)
1327+
{
1328+
HAL_NVIC_ClearPendingIRQ(USART11_IRQn);
1329+
HAL_UART_IRQHandler(uart_handlers[UART11_INDEX]);
1330+
}
1331+
#endif
1332+
1333+
/**
1334+
* @brief UART 12 IRQ handler
1335+
* @param None
1336+
* @retval None
1337+
*/
1338+
#if defined(UART12_BASE)
1339+
void UART12_IRQHandler(void)
1340+
{
1341+
HAL_NVIC_ClearPendingIRQ(UART12_IRQn);
1342+
HAL_UART_IRQHandler(uart_handlers[UART12_INDEX]);
1343+
}
1344+
#endif
1345+
12831346
/**
12841347
* @brief HAL UART Call Back
12851348
* @param UART handler

0 commit comments

Comments
 (0)