```
|
STM32G474xx HAL 用户手册
|
IRDA 发送和接收函数。 更多...
函数 | |
| HAL_StatusTypeDef | HAL_IRDA_Transmit (IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 在阻塞模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_Receive (IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size, uint32_t Timeout) |
| 在阻塞模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_Transmit_IT (IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size) |
| 在中断模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_Receive_IT (IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) |
| 在中断模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_Transmit_DMA (IRDA_HandleTypeDef *hirda, const uint8_t *pData, uint16_t Size) |
| 在DMA模式下发送一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_Receive_DMA (IRDA_HandleTypeDef *hirda, uint8_t *pData, uint16_t Size) |
| 在DMA模式下接收一定量的数据。 | |
| HAL_StatusTypeDef | HAL_IRDA_DMAPause (IRDA_HandleTypeDef *hirda) |
| 暂停DMA传输。 | |
| HAL_StatusTypeDef | HAL_IRDA_DMAResume (IRDA_HandleTypeDef *hirda) |
| 恢复DMA传输。 | |
| HAL_StatusTypeDef | HAL_IRDA_DMAStop (IRDA_HandleTypeDef *hirda) |
| 停止DMA传输。 | |
| HAL_StatusTypeDef | HAL_IRDA_Abort (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_IRDA_AbortTransmit (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的发送传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_IRDA_AbortReceive (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的接收传输(阻塞模式)。 | |
| HAL_StatusTypeDef | HAL_IRDA_Abort_IT (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_IRDA_AbortTransmit_IT (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的发送传输(中断模式)。 | |
| HAL_StatusTypeDef | HAL_IRDA_AbortReceive_IT (IRDA_HandleTypeDef *hirda) |
| 中止正在进行的接收传输(中断模式)。 | |
| void | HAL_IRDA_IRQHandler (IRDA_HandleTypeDef *hirda) |
| 处理IRDA中断请求。 | |
| __weak void | HAL_IRDA_TxCpltCallback (IRDA_HandleTypeDef *hirda) |
| Tx传输完成回调函数。 | |
| __weak void | HAL_IRDA_TxHalfCpltCallback (IRDA_HandleTypeDef *hirda) |
| Tx半传输完成回调函数。 | |
| __weak void | HAL_IRDA_RxCpltCallback (IRDA_HandleTypeDef *hirda) |
| Rx传输完成回调函数。 | |
| __weak void | HAL_IRDA_RxHalfCpltCallback (IRDA_HandleTypeDef *hirda) |
| Rx半传输完成回调函数。 | |
| __weak void | HAL_IRDA_ErrorCallback (IRDA_HandleTypeDef *hirda) |
| IRDA错误回调函数。 | |
| __weak void | HAL_IRDA_AbortCpltCallback (IRDA_HandleTypeDef *hirda) |
| IRDA中止完成回调函数。 | |
| __weak void | HAL_IRDA_AbortTransmitCpltCallback (IRDA_HandleTypeDef *hirda) |
| IRDA中止完成回调函数。 | |
| __weak void | HAL_IRDA_AbortReceiveCpltCallback (IRDA_HandleTypeDef *hirda) |
| IRDA中止接收完成回调函数。 | |
IRDA 发送和接收函数。
===============================================================================
##### IO操作函数 #####
===============================================================================
[..]
本小节提供了一组用于管理IRDA数据传输的函数。
[..]
IrDA是一个半双工通信协议。如果发送器忙碌,IrDA解码器将忽略IrDA接收线上的任何数据;
如果接收器忙碌,从USART到IrDA的TX上的数据将不会被IrDA编码。接收数据时应避免
发送,因为要发送的数据可能会被损坏。
[..]
(#) 有两种传输模式:
(++) 阻塞模式:通信采用轮询方式执行。所有数据处理完成后的HAL状态由同一函数在
传输结束后返回。
(++) 非阻塞模式:通信通过中断或DMA执行,这些API返回HAL状态。
数据处理结束时将通过专用IRDA IRQ(使用中断模式时)或DMA IRQ(使用
DMA模式时)指示。
在发送或接收过程结束时,将分别执行HAL_IRDA_TxCpltCallback()、
HAL_IRDA_RxCpltCallback()用户回调函数。检测到通信错误时,将执行
HAL_IRDA_ErrorCallback()用户回调函数。
(#) 阻塞模式API包括:
(++) HAL_IRDA_Transmit()
(++) HAL_IRDA_Receive()
(#) 使用中断的非阻塞模式API包括:
(++) HAL_IRDA_Transmit_IT()
(++) HAL_IRDA_Receive_IT()
(++) HAL_IRDA_IRQHandler()
(#) 使用DMA的非阻塞模式函数包括:
(++) HAL_IRDA_Transmit_DMA()
(++) HAL_IRDA_Receive_DMA()
(++) HAL_IRDA_DMAPause()
(++) HAL_IRDA_DMAResume()
(++) HAL_IRDA_DMAStop()
(#) 非阻塞模式下提供了一组传输完成回调函数:
(++) HAL_IRDA_TxHalfCpltCallback()
(++) HAL_IRDA_TxCpltCallback()
(++) HAL_IRDA_RxHalfCpltCallback()
(++) HAL_IRDA_RxCpltCallback()
(++) HAL_IRDA_ErrorCallback()
(#) 非阻塞模式传输可使用中止API中止:
(++) HAL_IRDA_Abort()
(++) HAL_IRDA_AbortTransmit()
(++) HAL_IRDA_AbortReceive()
(++) HAL_IRDA_Abort_IT()
(++) HAL_IRDA_AbortTransmit_IT()
(++) HAL_IRDA_AbortReceive_IT()
(#) 对于基于中断的中止服务(HAL_IRDA_Abortxxx_IT),提供了一组中止完成回调函数:
(++) HAL_IRDA_AbortCpltCallback()
(++) HAL_IRDA_AbortTransmitCpltCallback()
(++) HAL_IRDA_AbortReceiveCpltCallback()
(#) 在非阻塞模式传输中,可能的错误分为2类。错误处理如下:
(++) 错误被视为可恢复且非阻塞:传输可进行到底,但错误严重性需由用户评估:
这涉及中断模式接收中的帧错误、奇偶校验错误或噪声错误。
接收到的字符随后被检索并存储在Rx缓冲区中,设置错误代码以便用户
识别错误类型,并执行HAL_IRDA_ErrorCallback()用户回调函数。
传输在IRDA端继续进行。如果用户希望中止传输,应由用户调用中止服务。
(++) 错误被视为阻塞:传输无法正确完成并被中止。
这涉及中断模式接收中的溢出错误以及DMA模式中的所有错误。
设置错误代码以便用户识别错误类型,并执行
HAL_IRDA_ErrorCallback()用户回调函数。
| HAL_StatusTypeDef HAL_IRDA_Abort | ( | IRDA_HandleTypeDef * | hirda | ) |
中止正在进行的传输(阻塞模式)。
| hirda | 指向IRDA_HandleTypeDef结构的指针,该结构包含指定UART模块的配置信息。 |
| HAL | 状态 |
定义位于文件stm32g4xx_hal_irda.c的第1393行。
引用了 __HAL_IRDA_CLEAR_FLAG, __IRDA_HandleTypeDef::ErrorCode, __IRDA_HandleTypeDef::gState, HAL_DMA_Abort(), HAL_DMA_ERROR_TIMEOUT, HAL_DMA_GetError(), HAL_IRDA_ERROR_DMA, HAL_IRDA_ERROR_NONE, HAL_IRDA_STATE_READY, __IRDA_HandleTypeDef::hdmarx,