Skip to main content
Graduate
February 18, 2025
Question

Stm32h753zi uart error handler

  • February 18, 2025
  • 1 reply
  • 672 views

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.

    1 reply

    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!

    A3Author
    Graduate
    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

    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.