STM32G474xx HAL用户手册
函数
IO操作函数
USART导出函数

USART发送和接收函数。更多...

函数

HAL_StatusTypeDef HAL_USART_Transmit (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size, uint32_t Timeout)
 以阻塞模式简单发送数据。
HAL_StatusTypeDef HAL_USART_Receive (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
 以阻塞模式接收数据。
HAL_StatusTypeDef HAL_USART_TransmitReceive (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout)
 以阻塞模式全双工发送和接收数据。
HAL_StatusTypeDef HAL_USART_Transmit_IT (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size)
 以中断模式发送数据。
HAL_StatusTypeDef HAL_USART_Receive_IT (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
 以中断模式接收数据。
HAL_StatusTypeDef HAL_USART_TransmitReceive_IT (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
 以中断模式全双工发送和接收数据。
HAL_StatusTypeDef HAL_USART_Transmit_DMA (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint16_t Size)
 以DMA模式发送数据。
HAL_StatusTypeDef HAL_USART_Receive_DMA (USART_HandleTypeDef *husart, uint8_t *pRxData, uint16_t Size)
 以DMA模式接收数据。
HAL_StatusTypeDef HAL_USART_TransmitReceive_DMA (USART_HandleTypeDef *husart, const uint8_t *pTxData, uint8_t *pRxData, uint16_t Size)
 以非阻塞模式全双工发送和接收数据。
HAL_StatusTypeDef HAL_USART_DMAPause (USART_HandleTypeDef *husart)
 暂停DMA传输。
HAL_StatusTypeDef HAL_USART_DMAResume (USART_HandleTypeDef *husart)
 恢复DMA传输。
HAL_StatusTypeDef HAL_USART_DMAStop (USART_HandleTypeDef *husart)
 停止DMA传输。
HAL_StatusTypeDef HAL_USART_Abort (USART_HandleTypeDef *husart)
 中止正在进行的传输(阻塞模式)。
HAL_StatusTypeDef HAL_USART_Abort_IT (USART_HandleTypeDef *husart)
 中止正在进行的传输(中断模式)。
void HAL_USART_IRQHandler (USART_HandleTypeDef *husart)
 处理USART中断请求。
__weak void HAL_USART_TxCpltCallback (USART_HandleTypeDef *husart)
 Tx传输完成回调。
__weak void HAL_USART_TxHalfCpltCallback (USART_HandleTypeDef *husart)
 Tx半传输完成回调。
__weak void HAL_USART_RxCpltCallback (USART_HandleTypeDef *husart)
 Rx传输完成回调。
__weak void HAL_USART_RxHalfCpltCallback (USART_HandleTypeDef *husart)
 Rx半传输完成回调。
__weak void HAL_USART_TxRxCpltCallback (USART_HandleTypeDef *husart)
 用于非阻塞过程的Tx/Rx传输完成回调。
__weak void HAL_USART_ErrorCallback (USART_HandleTypeDef *husart)
 USART错误回调。
__weak void HAL_USART_AbortCpltCallback (USART_HandleTypeDef *husart)
 USART中止完成回调。

详细说明

USART发送和接收函数。

 ===============================================================================
                      ##### IO操作函数 #####
 ===============================================================================
    [..] 本节提供了一组用于管理USART同步SPI数据传输的函数。

    [..] USART同步SPI支持主模式和从模式(SCLK作为输出或输入)。

    [..]

    (#) 有两种传输模式:
        (++) 阻塞模式:通信以轮询模式执行。
             所有数据处理的HAL状态在传输完成后由同一函数返回。
        (++) 非阻塞模式:通信使用中断
             或DMA执行,这些API返回HAL状态。
             数据处理的完成将通过
             使用中断模式时的专用USART IRQ或使用
             DMA模式时的DMA IRQ来指示。
             HAL_USART_TxCpltCallback()、HAL_USART_RxCpltCallback()和HAL_USART_TxRxCpltCallback()用户回调
             将分别在发送或接收过程结束时执行
             当检测到通信错误时,将执行HAL_USART_ErrorCallback()用户回调

    (#) 阻塞模式API:
        (++) HAL_USART_Transmit() 简单模式
        (++) HAL_USART_Receive() 全双工仅接收
        (++) HAL_USART_TransmitReceive() 全双工模式

    (#) 带中断的非阻塞模式API:
        (++) HAL_USART_Transmit_IT() 简单模式
        (++) HAL_USART_Receive_IT() 全双工仅接收
        (++) HAL_USART_TransmitReceive_IT() 全双工模式
        (++) HAL_USART_IRQHandler()

    (#) 带DMA的非阻塞模式API:
        (++) HAL_USART_Transmit_DMA() 简单模式
        (++) HAL_USART_Receive_DMA() 全双工仅接收
        (++) HAL_USART_TransmitReceive_DMA() 全双工模式
        (++) HAL_USART_DMAPause()
        (++) HAL_USART_DMAResume()
        (++) HAL_USART_DMAStop()

    (#) 非阻塞模式提供了一组传输完成回调:
        (++) HAL_USART_TxCpltCallback()
        (++) HAL_USART_RxCpltCallback()
        (++) HAL_USART_TxHalfCpltCallback()
        (++) HAL_USART_RxHalfCpltCallback()
        (++) HAL_USART_ErrorCallback()
        (++) HAL_USART_TxRxCpltCallback()

    (#) 非阻塞模式传输可以使用中止API中止:
        (++) HAL_USART_Abort()
        (++) HAL_USART_Abort_IT()

    (#) 对于基于中断的中止服务(HAL_USART_Abort_IT),提供了中止完成回调:
        (++) HAL_USART_AbortCpltCallback()

    (#) 在非阻塞模式传输中,可能的错误分为2类。
        错误处理如下:
        (++) 错误被视为可恢复和非阻塞:传输可以进行到结束,但错误严重程度
             应由用户评估:这涉及帧错误、
             中断模式接收中的奇偶校验错误或噪声错误。
             然后检索接收到的字符并存储在Rx缓冲区中,设置错误代码以允许用户识别
             错误类型,并执行HAL_USART_ErrorCallback()用户回调。
             USART侧的传输继续进行。
             如果用户要中止它,应由用户调用中止服务。
        (++) 错误被视为阻塞:传输无法正确完成并被中止。
             这涉及中断模式接收中的溢出错误和DMA模式中的所有错误。
             设置错误代码以允许用户识别错误类型,
             并执行HAL_USART_ErrorCallback()用户回调。


函数文档

HAL_StatusTypeDef HAL_USART_Abort ( USART_HandleTypeDef husart)

中止正在进行的传输(阻塞模式)。

参数:
husartUSART句柄。
注意:
此过程可用于中止以中断或DMA模式启动的任何正在进行的传输。此过程执行以下操作:
  • 禁用USART中断(Tx和Rx)
  • 禁用外设寄存器中的DMA传输(如果已启用)
  • 通过调用HAL_DMA_Abort中止DMA传输(在DMA模式下传输的情况下)
  • 将句柄状态设置为READY
此过程以阻塞模式执行:退出函数时,中止被视为完成。
返回值:
HAL状态

定义于文件stm32g4xx_hal_usart.c1884行。

引用了__HAL_USART_CLEAR_FLAG__HAL_USART_SEND_REQ__USART_HandleTypeDef::ErrorCode__USART_HandleTypeDef::FifoModeHAL_DMA_Abort()HAL_DMA_ERROR_TIMEOUTHAL_DMA_GetError()HAL_USART_ERROR_DMAHAL_USART_ERROR_NONEHAL_USART_STATE_READY__USART_HandleTypeDef::hdmarx__USART_HandleTypeDef::hdmatx__USART_HandleTypeDef::Instance__USART_HandleTypeDef::RxXferCount__USART_HandleTypeDef::State__USART_HandleTypeDef::TxXferCountUSART_CLEAR_FEFUSART_CLEAR_NEFUSART_CLEAR_OREFUSART_CLEAR_PEFUSART_FIFOMODE_ENABLEUSART_RXDATA_FLUSH_REQUESTUSART_TXDATA_FLUSH_REQUEST以及__DMA_HandleTypeDef::XferAbortCallback

HAL_StatusTypeDef HAL_USART_Abort_IT ( USART_HandleTypeDef husart)

中止正在进行的传输(中断模式)。

参数:
husartUSART句柄。
注意:
此过程可用于中止以