Skip to content

Commit eebd0e3

Browse files
committed
fix(uart): add missing USART11 and UART12 support
STM32H5 have those instances. Fixes #2640. Signed-off-by: Frederic Pillon <frederic.pillon@st.com>
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

Lines changed: 64 additions & 1 deletion
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy