|
STM32G474xx HAL 用户手册
|
UART 发送/接收函数。 更多...
函数 | |
| HAL_StatusTypeDef | HAL_UART_Transmit (UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 在阻塞模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_Receive (UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 在阻塞模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_Transmit_IT (UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) |
| 在中断模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_Receive_IT (UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) |
| 在中断模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_Transmit_DMA (UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) |
| 在 DMA 模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_Receive_DMA (UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size) |
| 在 DMA 模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_UART_DMAPause (UART_HandleTypeDef *huart) |
| 暂停 DMA 传输。 | |
| HAL_StatusTypeDef | HAL_UART_DMAResume (UART_HandleTypeDef *huart) |
| 恢复 DMA 传输。 | |
| HAL_StatusTypeDef | HAL_UART_DMAStop (UART_HandleTypeDef *huart) |
| 停止 DMA 传输。 | |
| HAL_StatusTypeDef | HAL_UART_Abort (UART_HandleTypeDef *huart) |
| 中止进行中的传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_UART_AbortTransmit (UART_HandleTypeDef *huart) |
| 中止进行中的发送传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_UART_AbortReceive (UART_HandleTypeDef *huart) |
| 中止进行中的接收传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_UART_Abort_IT (UART_HandleTypeDef *huart) |
| 中止进行中的传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_UART_AbortTransmit_IT (UART_HandleTypeDef *huart) |
| 中止进行中的发送传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_UART_AbortReceive_IT (UART_HandleTypeDef *huart) |
| 中止进行中的接收传输(中断模式)。 | |
| void | HAL_UART_IRQHandler (UART_HandleTypeDef *huart) |
| 处理 UART 中断请求。 | |
| __weak void | HAL_UART_TxCpltCallback (UART_HandleTypeDef *huart) |
| 发送传输完成回调。 | |
| __weak void | HAL_UART_TxHalfCpltCallback (UART_HandleTypeDef *huart) |
| 发送半传输完成回调。 | |
| __weak void | HAL_UART_RxCpltCallback (UART_HandleTypeDef *huart) |
| 接收传输完成回调。 | |
| __weak void | HAL_UART_RxHalfCpltCallback (UART_HandleTypeDef *huart) |
| 接收半传输完成回调。 | |
| __weak void | HAL_UART_ErrorCallback (UART_HandleTypeDef *huart) |
| UART 错误回调。 | |
| __weak void | HAL_UART_AbortCpltCallback (UART_HandleTypeDef *huart) |
| UART 中止完成回调。 | |
| __weak void | HAL_UART_AbortTransmitCpltCallback (UART_HandleTypeDef *huart) |
| UART 中止完成回调。 | |
| __weak void | HAL_UART_AbortReceiveCpltCallback (UART_HandleTypeDef *huart) |
| UART 中止接收完成回调。 | |
| __weak void | HAL_UARTEx_RxEventCallback (UART_HandleTypeDef *huart, uint16_t Size) |
| 接收事件回调(在使用高级接收服务后调用的 Rx 事件通知)。 | |
UART 发送/接收函数。
===============================================================================
##### IO 操作函数 #####
===============================================================================
[..]
本小节提供一组用于管理 UART 异步和半双工数据传输的函数。
(#) 有两种传输模式:
(++) 阻塞模式:通信以轮询模式执行。
所有数据处理的 HAL 状态在传输完成后由同一函数返回。
(++) 非阻塞模式:通信使用中断或 DMA 执行,这些 API 返回 HAL 状态。
数据处理的结束将通过专用的 UART IRQ(使用中断模式时)或 DMA IRQ(使用 DMA 模式时)指示。
HAL_UART_TxCpltCallback()、HAL_UART_RxCpltCallback() 用户回调将分别在发送或接收过程结束时执行。
当检测到通信错误时,将执行 HAL_UART_ErrorCallback() 用户回调。
(#) 阻塞模式 API 为:
(++) HAL_UART_Transmit()
(++) HAL_UART_Receive()
(#) 使用中断的非阻塞模式 API 为:
(++) HAL_UART_Transmit_IT()
(++) HAL_UART_Receive_IT()
(++) HAL_UART_IRQHandler()
(#) 使用 DMA 的非阻塞模式 API 为:
(++) HAL_UART_Transmit_DMA()
(++) HAL_UART_Receive_DMA()
(++) HAL_UART_DMAPause()
(++) HAL_UART_DMAResume()
(++) HAL_UART_DMAStop()
(#) 在非阻塞模式下提供了一组传输完成回调:
(++) HAL_UART_TxHalfCpltCallback()
(++) HAL_UART_TxCpltCallback()
(++) HAL_UART_RxHalfCpltCallback()
(++) HAL_UART_RxCpltCallback()
(++) HAL_UART_ErrorCallback()
(#) 非阻塞模式传输可以使用中止 API 中止:
(++) HAL_UART_Abort()
(++) HAL_UART_AbortTransmit()
(++) HAL_UART_AbortReceive()
(++) HAL_UART_Abort_IT()
(++) HAL_UART_AbortTransmit_IT()
(++) HAL_UART_AbortReceive_IT()
(#) 对于基于中断的中止服务(HAL_UART_Abortxxx_IT),提供了一组中止完成回调:
(++) HAL_UART_AbortCpltCallback()
(++) HAL_UART_AbortTransmitCpltCallback()
(++) HAL_UART_AbortReceiveCpltCallback()
(#) 对于增强接收服务的非阻塞模式,提供了一个 Rx 事件接收回调(Rx 事件通知):
(++) HAL_UARTEx_RxEventCallback()
(#) 从停止模式唤醒回调:
(++) HAL_UARTEx_WakeupCallback()
(#) 在非阻塞模式传输中,可能的错误分为两类。
错误处理如下:
(++) 错误被视为可恢复且非阻塞:传输可以继续进行直到结束,但错误严重性需要用户评估:这涉及中断模式接收中的帧错误、奇偶校验错误或噪声错误。
接收到的字符随后被检索并存储在 Rx 缓冲区中,设置错误代码以允许用户识别错误类型,并执行 HAL_UART_ErrorCallback() 用户回调。
UART 侧的传输保持进行中。
如果用户想要中止它,应由用户调用中止服务。
(++) 错误被视为阻塞:传输无法正常完成并被中止。
这涉及中断模式接收中的溢出错误和 DMA 模式中的所有错误。
设置错误代码以允许用户识别错误类型,并执行 HAL_UART_ErrorCallback() 用户回调。
-@- 在半双工通信中,禁止并行运行发送和接收过程,UART 状态 HAL_UART_STATE_BUSY_TX_RX 无法使用。