Skip to main content
Associate III
July 21, 2025
Question

STM32H745ZITX - USART3 RX Interrupt Works Once Then Stuck in BUSY

  • July 21, 2025
  • 2 replies
  • 287 views

Hello,

I'm working with STM32H745ZITX on a dual-core setup. I configured USART3 on the CM7 core. The communication flow is:

  • TX: Using HAL_UART_Transmit (polling)

  • RX: Using HAL_UART_Receive_IT

The first message reception works correctly. The HAL_UART_RxCpltCallback function is triggered as expected — however, the received data buffer remains empty (i.e. I can't read the data).
On subsequent transmissions, no interrupt is triggered, and the RX remains in HAL_BUSY state. As a result, no new data is received, even though I can see the incoming data on the RX pin via an oscilloscope.

I verified:

  • USART3_IRQHandler is implemented and calls HAL_UART_IRQHandler(&huart3)

  • Only the CM7 core handles UART3; CM4 does not touch it

  • HAL_UART_Receive_IT returns HAL_BUSY after the first use

Question: 

  1. Is there any dual-core-specific configuration I need to apply to use UART interrupts reliably on CM7?

  2. Could D-Cache or I-Cache being enabled affect UART RX interrupts even when not using DMA?

    • If yes, what is the proper way to handle this? 

Any insights or suggestions are appreciated.

Thanks in advance,
Kemal

2 replies

Karl Yamashita
Principal
July 21, 2025

Not receiving after your init HAL_UART_RxCpltCallback works the first time probably means a code issue.

Show your code in HAL_UART_RxCpltCallback

If a reply has proven helpful, click on Accept as Solution so that it'll show at top of the post.CAN Jammer an open source CAN bus hacking toolCANableV3 Open Source
Technical Moderator
July 28, 2025

Hello @KemalUzgoren 

As @Karl Yamashita suggest, please share your code to better understand the issue. 

"To give better visibility on the answered topics, please click on ""Accept as Solution"" on the reply which solved your issue or answered your question.Saket_Om"