Skip to main content
A3_it
Associate III
February 18, 2025
Question

Stm32h753zi uart error handler

Hi,

When HAL_Uart_errorhandler is triggered, how can we check if the trigger is for reception or transmission?

This topic has been closed for replies.

4 replies

Andrew Neil
Super User
February 18, 2025

Check the UART error & status flags - each one will be applicable to only receive or transmit.

eg, you can't get framing or parity errors on transmit - only receive!

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
A3_it
A3_itAuthor
Associate III
February 18, 2025

Possible UART errors listed below, and which one is for TX, and which one is for RX mentioned below. Please let me know if my understandings are correct.

#define HAL_UART_ERROR_NONE (0x00000000U) /*!< No error */
#define HAL_UART_ERROR_PE (0x00000001U) /*!< Parity error */
#define HAL_UART_ERROR_NE (0x00000002U) /*!< Noise error */
#define HAL_UART_ERROR_FE (0x00000004U) /*!< Frame error */
#define HAL_UART_ERROR_ORE (0x00000008U) /*!< Overrun error */
#define HAL_UART_ERROR_DMA (0x00000010U) /*!< DMA transfer error */
#define HAL_UART_ERROR_RTO (0x00000020U) /*!< Receiver Timeout error */


Receive Error: HAL_UART_ERROR_PE, HAL_UART_ERROR_FE, HAL_UART_ERROR_NE, HAL_UART_ERROR_ORE, HAL_UART_ERROR_RTO, HAL_UART_ERROR_DMA
Transmit Error: HAL_UART_ERROR_DMA

Andrew Neil
Super User
February 18, 2025

Look-up the definitions of those bits in the Reference Manual.

These, by definition,  can only happen on receive:

#define HAL_UART_ERROR_PE (0x00000001U) /*!< Parity error */
#define HAL_UART_ERROR_NE (0x00000002U) /*!< Noise error */
#define HAL_UART_ERROR_FE (0x00000004U) /*!< Frame error */
#define HAL_UART_ERROR_RTO (0x00000020U) /*!< Receiver Timeout error */

 

 These you'd have to check in the Refence Manual:

#define HAL_UART_ERROR_ORE (0x00000008U) /*!< Overrun error */
#define HAL_UART_ERROR_DMA (0x00000010U) /*!< DMA transfer error */

 

Note How to insert source code.

A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.