STM32L486xx HAL User Manual
Functions
IO operation functions
USART Exported Functions

USART Transmit and Receive functions. More...

Functions

HAL_StatusTypeDef HAL_USART_Transmit (USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
 Simplex send an amount of data in blocking mode.
HAL_StatusTypeDef HAL_USART_Receive (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
 Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_USART_TransmitReceive (USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
 Full-Duplex Send and Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_USART_Transmit_IT (USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
 Send an amount of data in interrupt mode.
HAL_StatusTypeDef HAL_USART_Receive_IT (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
 Receive an amount of data in blocking mode.
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT (USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
 Full-Duplex Send and Receive an amount of data in interrupt mode.
HAL_StatusTypeDef HAL_USART_Transmit_DMA (USART_HandleTypeDef *husart, uint8_t *pTxData, uint16_t Size)
 Send an amount of data in DMA mode.
HAL_StatusTypeDef HAL_USART_Receive_DMA (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
 Receive an amount of data in DMA mode.
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA (USART_HandleTypeDef *husart, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
 Full-Duplex Transmit Receive an amount of data in non-blocking mode.
HAL_StatusTypeDef HAL_USART_DMAPause (USART_HandleTypeDef *husart)
 Pause the DMA Transfer.
HAL_StatusTypeDef HAL_USART_DMAResume (USART_HandleTypeDef *husart)
 Resume the DMA Transfer.
HAL_StatusTypeDef HAL_USART_DMAStop (USART_HandleTypeDef *husart)
 Stop the DMA Transfer.
HAL_StatusTypeDef HAL_USART_Abort (USART_HandleTypeDef *husart)
 Abort ongoing transfers (blocking mode).
HAL_StatusTypeDef HAL_USART_Abort_IT (USART_HandleTypeDef *husart)
 Abort ongoing transfers (Interrupt mode).
void HAL_USART_IRQHandler (USART_HandleTypeDef *husart)
 Handle USART interrupt request.
__weak void HAL_USART_TxCpltCallback (USART_HandleTypeDef *husart)
 Tx Transfer completed callback.
__weak void HAL_USART_TxHalfCpltCallback (USART_HandleTypeDef *husart)
 Tx Half Transfer completed callback.
__weak void HAL_USART_RxCpltCallback (USART_HandleTypeDef *husart)
 Rx Transfer completed callback.
__weak void HAL_USART_RxHalfCpltCallback (USART_HandleTypeDef *husart)
 Rx Half Transfer completed callback.
__weak void HAL_USART_TxRxCpltCallback (USART_HandleTypeDef *husart)
 Tx/Rx Transfers completed callback for the non-blocking process.
__weak void HAL_USART_ErrorCallback (USART_HandleTypeDef *husart)
 USART error callback.
__weak void HAL_USART_AbortCpltCallback (USART_HandleTypeDef *husart)
 USART Abort Complete callback.

Detailed Description

USART Transmit and Receive functions.

 ===============================================================================
                      ##### IO operation functions #####
 ===============================================================================
    [..] This subsection provides a set of functions allowing to manage the USART synchronous
    data transfers.

    [..] The USART supports master mode only: it cannot receive or send data related to an input
         clock (SCLK is always an output).

    (#) There are two modes of transfer:
       (++) Blocking mode: The communication is performed in polling mode.
            The HAL status of all data processing is returned by the same function
            after finishing transfer.
       (++) No-Blocking mode: The communication is performed using Interrupts
           or DMA, These API's return the HAL status.
           The end of the data processing will be indicated through the
           dedicated USART IRQ when using Interrupt mode or the DMA IRQ when
           using DMA mode.
           The HAL_USART_TxCpltCallback(), HAL_USART_RxCpltCallback() and HAL_USART_TxRxCpltCallback() user callbacks
           will be executed respectively at the end of the transmit or Receive process
           The HAL_USART_ErrorCallback()user callback will be executed when a communication error is detected

    (#) Blocking mode API's are :
        (++) HAL_USART_Transmit()in simplex mode
        (++) HAL_USART_Receive() in full duplex receive only
        (++) HAL_USART_TransmitReceive() in full duplex mode

    (#) Non-Blocking mode API's with Interrupt are :
        (++) HAL_USART_Transmit_IT()in simplex mode
        (++) HAL_USART_Receive_IT() in full duplex receive only
        (++) HAL_USART_TransmitReceive_IT()in full duplex mode
        (++) HAL_USART_IRQHandler()

    (#) No-Blocking mode API's  with DMA are :
        (++) HAL_USART_Transmit_DMA()in simplex mode
        (++) HAL_USART_Receive_DMA() in full duplex receive only
        (++) HAL_USART_TransmitReceive_DMA() in full duplex mode
        (++) HAL_USART_DMAPause()
        (++) HAL_USART_DMAResume()
        (++) HAL_USART_DMAStop()

    (#) A set of Transfer Complete Callbacks are provided in Non_Blocking mode:
        (++) HAL_USART_TxCpltCallback()
        (++) HAL_USART_RxCpltCallback()
        (++) HAL_USART_TxHalfCpltCallback()
        (++) HAL_USART_RxHalfCpltCallback()
        (++) HAL_USART_ErrorCallback()
        (++) HAL_USART_TxRxCpltCallback()

    (#) Non-Blocking mode transfers could be aborted using Abort API's :
        (+) HAL_USART_Abort()
        (+) HAL_USART_Abort_IT()

    (#) For Abort services based on interrupts (HAL_USART_Abort_IT), a Abort Complete Callbacks is provided:
        (+) HAL_USART_AbortCpltCallback()

    (#) In Non-Blocking mode transfers, possible errors are split into 2 categories.
        Errors are handled as follows :
       (+) Error is considered as Recoverable and non blocking : Transfer could go till end, but error severity is
           to be evaluated by user : this concerns Frame Error, Parity Error or Noise Error in Interrupt mode reception .
           Received character is then retrieved and stored in Rx buffer, Error code is set to allow user to identify error type,
           and HAL_USART_ErrorCallback() user callback is executed. Transfer is kept ongoing on USART side.
           If user wants to abort it, Abort services should be called by user.
       (+) Error is considered as Blocking : Transfer could not be completed properly and is aborted.
           This concerns Overrun Error In Interrupt mode reception and all errors in DMA mode.
           Error code is set to allow user to identify error type, and HAL_USART_ErrorCallback() user callback is executed.


Function Documentation

HAL_StatusTypeDef HAL_USART_Abort ( USART_HandleTypeDef husart)

Abort ongoing transfers (blocking mode).

Parameters:
husartUSART handle.
Note:
This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode. This procedure performs following operations :
  • Disable USART Interrupts (Tx and Rx)
  • Disable the DMA transfer in the peripheral register (if enabled)
  • Abort DMA transfer by calling HAL_DMA_Abort (in case of transfer in DMA mode)
  • Set handle State to READY
This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
Return values:
HALstatus

Definition at line 1723 of file stm32l4xx_hal_usart.c.

References __HAL_USART_CLEAR_FLAG, __HAL_USART_SEND_REQ, __USART_HandleTypeDef::ErrorCode, HAL_DMA_Abort(), HAL_USART_ERROR_NONE, HAL_USART_STATE_READY, __USART_HandleTypeDef::hdmarx, __USART_HandleTypeDef::hdmatx, __USART_HandleTypeDef::Instance, __USART_HandleTypeDef::RxXferCount, __USART_HandleTypeDef::State, __USART_HandleTypeDef::TxXferCount, USART_CLEAR_FEF, USART_CLEAR_NEF, USART_CLEAR_OREF, USART_CLEAR_PEF, USART_RXDATA_FLUSH_REQUEST, USART_TXDATA_FLUSH_REQUEST, and __DMA_HandleTypeDef::XferAbortCallback.

HAL_StatusTypeDef HAL_USART_Abort_IT ( USART_HandleTypeDef husart)

Abort ongoing transfers (Interrupt mode).

Parameters:
husartUSART handle.
Note:
This procedure could be used for aborting any ongoing transfer started in Interrupt or DMA mode. This procedure performs following operations :
  • Disable USART Interrupts (Tx and Rx)
  • Disable the DMA transfer in the peripheral register (if enabled)
  • Abort DMA transfer by calling HAL_DMA_Abort_IT (in case of transfer in DMA mode)
  • Set handle State to READY
  • At abort completion, call user abort complete callback
This procedure is executed in Interrupt mode, meaning that abort procedure could be considered as completed only when user abort complete callback is executed (not when exiting function).
Return values:
HALstatus

Definition at line 1807 of file stm32l4xx_hal_usart.c.

References __HAL_USART_CLEAR_FLAG, __HAL_USART_SEND_REQ, __USART_HandleTypeDef::AbortCpltCallback, __USART_HandleTypeDef::ErrorCode, HAL_DMA_Abort_IT(), HAL_USART_AbortCpltCallback(), HAL_USART_ERROR_NONE, HAL_USART_STATE_READY, __USART_HandleTypeDef::hdmarx, __USART_HandleTypeDef::hdmatx, __USART_HandleTypeDef::Instance, __USART_HandleTypeDef::RxXferCount, __USART_HandleTypeDef::State, __USART_HandleTypeDef::TxXferCount, USART_CLEAR_FEF, USART_CLEAR_NEF, USART_CLEAR_OREF, USART_CLEAR_PEF, USART_DMARxAbortCallback(), USART_DMATxAbortCallback(), USART_RXDATA_FLUSH_REQUEST, USART_TXDATA_FLUSH_REQUEST, and __DMA_HandleTypeDef::XferAbortCallback.

USART Abort Complete callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2297 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_Abort_IT(), HAL_USART_UnRegisterCallback(), USART_DMARxAbortCallback(), USART_DMATxAbortCallback(), and USART_InitCallbacksToDefault().

HAL_StatusTypeDef HAL_USART_DMAPause ( USART_HandleTypeDef husart)

Pause the DMA Transfer.

Parameters:
husartUSART handle.
Return values:
HALstatus

Definition at line 1602 of file stm32l4xx_hal_usart.c.

References HAL_USART_STATE_BUSY_RX, HAL_USART_STATE_BUSY_TX, HAL_USART_STATE_BUSY_TX_RX, __USART_HandleTypeDef::Instance, and __USART_HandleTypeDef::State.

HAL_StatusTypeDef HAL_USART_DMAResume ( USART_HandleTypeDef husart)

Resume the DMA Transfer.

Parameters:
husartUSART handle.
Return values:
HALstatus

Definition at line 1643 of file stm32l4xx_hal_usart.c.

References __HAL_USART_CLEAR_FLAG, HAL_USART_STATE_BUSY_RX, HAL_USART_STATE_BUSY_TX, HAL_USART_STATE_BUSY_TX_RX, __USART_HandleTypeDef::Instance, __USART_HandleTypeDef::State, and USART_CLEAR_OREF.

HAL_StatusTypeDef HAL_USART_DMAStop ( USART_HandleTypeDef husart)

Stop the DMA Transfer.

Parameters:
husartUSART handle.
Return values:
HALstatus

Definition at line 1681 of file stm32l4xx_hal_usart.c.

References HAL_DMA_Abort(), HAL_USART_STATE_READY, __USART_HandleTypeDef::hdmarx, __USART_HandleTypeDef::hdmatx, __USART_HandleTypeDef::Instance, __USART_HandleTypeDef::State, and USART_EndTransfer().

USART error callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2282 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_IRQHandler(), HAL_USART_UnRegisterCallback(), USART_DMAAbortOnError(), USART_DMAError(), and USART_InitCallbacksToDefault().

HAL_StatusTypeDef HAL_USART_Receive ( USART_HandleTypeDef husart,
uint8_t *  pRxData,
uint16_t  Size,
uint32_t  Timeout 
)
HAL_StatusTypeDef HAL_USART_Receive_DMA ( USART_HandleTypeDef husart,
uint8_t *  pRxData,
uint16_t  Size 
)

Receive an amount of data in DMA mode.

Note:
When the USART parity is enabled (PCE = 1), the received data contain the parity bit (MSB position).
The USART DMA transmit channel must be configured in order to generate the clock for the slave.
Parameters:
husartUSART handle.
pRxDatapointer to data buffer.
Sizeamount of data to be received.
Return values:
HALstatus

Definition at line 1436 of file stm32l4xx_hal_usart.c.

References __USART_HandleTypeDef::ErrorCode, HAL_DMA_Start_IT(), HAL_USART_ERROR_NONE, HAL_USART_STATE_BUSY_RX, HAL_USART_STATE_READY, __USART_HandleTypeDef::hdmarx, __USART_HandleTypeDef::hdmatx, __USART_HandleTypeDef::Instance, __USART_HandleTypeDef::pRxBuffPtr, __USART_HandleTypeDef::pTxBuffPtr, __USART_HandleTypeDef::RxXferSize, __USART_HandleTypeDef::State, __USART_HandleTypeDef::TxXferSize, USART_DMAError(), USART_DMAReceiveCplt(), USART_DMARxHalfCplt(), __DMA_HandleTypeDef::XferCpltCallback, __DMA_HandleTypeDef::XferErrorCallback, and __DMA_HandleTypeDef::XferHalfCpltCallback.

HAL_StatusTypeDef HAL_USART_Receive_IT ( USART_HandleTypeDef husart,
uint8_t *  pRxData,
uint16_t  Size 
)

Rx Transfer completed callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2237 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_UnRegisterCallback(), USART_DMAReceiveCplt(), USART_InitCallbacksToDefault(), USART_RxISR_16BIT(), and USART_RxISR_8BIT().

Rx Half Transfer completed callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2252 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_UnRegisterCallback(), USART_DMARxHalfCplt(), and USART_InitCallbacksToDefault().

HAL_StatusTypeDef HAL_USART_Transmit ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint16_t  Size,
uint32_t  Timeout 
)
HAL_StatusTypeDef HAL_USART_Transmit_DMA ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint16_t  Size 
)
HAL_StatusTypeDef HAL_USART_Transmit_IT ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint16_t  Size 
)
HAL_StatusTypeDef HAL_USART_TransmitReceive ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint8_t *  pRxData,
uint16_t  Size,
uint32_t  Timeout 
)
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint8_t *  pRxData,
uint16_t  Size 
)
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT ( USART_HandleTypeDef husart,
uint8_t *  pTxData,
uint8_t *  pRxData,
uint16_t  Size 
)

Tx Transfer completed callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2207 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_UnRegisterCallback(), USART_DMATransmitCplt(), USART_EndTransmit_IT(), and USART_InitCallbacksToDefault().

Tx Half Transfer completed callback.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2222 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_UnRegisterCallback(), USART_DMATxHalfCplt(), and USART_InitCallbacksToDefault().

Tx/Rx Transfers completed callback for the non-blocking process.

Parameters:
husartUSART handle.
Return values:
None

Definition at line 2267 of file stm32l4xx_hal_usart.c.

Referenced by HAL_USART_UnRegisterCallback(), USART_DMAReceiveCplt(), USART_EndTransmit_IT(), USART_InitCallbacksToDefault(), USART_RxISR_16BIT(), and USART_RxISR_8BIT().