Skip to main content
Associate
Nov 1, 2026 4:54 PM UTC
Question

STM32H743: LPUART1 missing from IS_UART_FIFO_INSTANCE()

Hello,

I’m encountering an issue with the STM32H743VIT6 and the latest STM32H7 HAL driver.

When using LPUART1 with USE_FULL_ASSERT enabled, the initialization code generated by STM32CubeMX triggers an assertion in:

HAL_UARTEx_SetTxFifoThreshold()

The assertion is:

assert_param(IS_UART_FIFO_INSTANCE(huart->Instance));

The problem is that LPUART1 is missing from the IS_UART_FIFO_INSTANCE() macro, although it is documented as supporting TX and RX FIFOs.

Interestingly, this exact issue was already reported in March 2023:

Previous discussion

At that time, ST representatives indicated that the issue was being investigated and that a support case had been opened.

However, the issue still appears to be present in the latest HAL driver.

Could someone from ST confirm whether this is a known issue and whether a fix is planned?

It seems that simply adding LPUART1 to IS_UART_FIFO_INSTANCE() would solve the problem.

For comparison, I checked the STM32G4 HAL driver (STM32G474RE), and LPUART1 is correctly included in the IS_UART_FIFO_INSTANCE() macro.

This suggests that the omission in the STM32H7 HAL driver is likely an oversight rather than an intentional hardware limitation.

Thanks.

1 reply

Pavel A.
Nov 1, 2026 7:41 PM UTC

This omission is in the H7 CMSIS device repo (technically not in the HAL drivers).

I’ve opened issue on github.

Thanks!

Until the fix is done:  if you don’t want to modify the file Drivers/CMSIS/Device/ST/STM32H7xx/Include/stm32h743xx.h in your project tree, or in the global “Cube repository”, you can redefine the macro IS_UART_FIFO_INSTANCE in your  `…/Core/Inc/stm32h7xx_hal_conf.h`, at the end, after the line #endif /* USE_FULL_ASSERT */

#ifdef LPUART1
#undef IS_UART_FIFO_INSTANCE
#define IS_UART_FIFO_INSTANCE(INSTANCE) ...... ((INSTANCE) == LPUART1))
#endif