2025-07-21 12:07 PM
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:
Is there any dual-core-specific configuration I need to apply to use UART interrupts reliably on CM7?
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
2025-07-21 1:35 PM
Not receiving after your init HAL_UART_RxCpltCallback works the first time probably means a code issue.
Show your code in HAL_UART_RxCpltCallback