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

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

函数

HAL_StatusTypeDef HAL_SMARTCARD_Transmit (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size, uint32_t Timeout)
 以阻塞模式发送指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Receive (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size, uint32_t Timeout)
 以阻塞模式接收指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_IT (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size)
 以中断模式发送指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Receive_IT (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
 以中断模式接收指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Transmit_DMA (SMARTCARD_HandleTypeDef *hsmartcard, const uint8_t *pData, uint16_t Size)
 以 DMA 模式发送指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Receive_DMA (SMARTCARD_HandleTypeDef *hsmartcard, uint8_t *pData, uint16_t Size)
 以 DMA 模式接收指定数量的数据。
HAL_StatusTypeDef HAL_SMARTCARD_Abort (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的传输(阻塞模式)。
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的发送传输(阻塞模式)。
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的接收传输(阻塞模式)。
HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的传输(中断模式)。
HAL_StatusTypeDef HAL_SMARTCARD_AbortTransmit_IT (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的发送传输(中断模式)。
HAL_StatusTypeDef HAL_SMARTCARD_AbortReceive_IT (SMARTCARD_HandleTypeDef *hsmartcard)
 中止正在进行的接收传输(中断模式)。
void HAL_SMARTCARD_IRQHandler (SMARTCARD_HandleTypeDef *hsmartcard)
 处理 SMARTCARD 中断请求。
__weak void HAL_SMARTCARD_TxCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 发送传输完成回调函数。
__weak void HAL_SMARTCARD_RxCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 接收传输完成回调函数。
__weak void HAL_SMARTCARD_ErrorCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 SMARTCARD 错误回调函数。
__weak void HAL_SMARTCARD_AbortCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 SMARTCARD 中止完成回调函数。
__weak void HAL_SMARTCARD_AbortTransmitCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 SMARTCARD 中止完成回调函数。
__weak void HAL_SMARTCARD_AbortReceiveCpltCallback (SMARTCARD_HandleTypeDef *hsmartcard)
 SMARTCARD 中止接收完成回调函数。

详细描述

SMARTCARD 发送和接收函数。

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

  [..]
    智能卡是一种单线半双工通信协议。
    智能卡接口设计用于支持ISO 7816-3标准中定义的异步协议智能卡。
    USART应配置为:
    (+) 8位加奇偶校验:在USART_CR1寄存器中设置M=1和PCE=1
    (+) 发送和接收时使用1.5个停止位:在USART_CR2寄存器中设置STOP=11。

  [..]
    (#) 有两种传输模式:
        (##) 阻塞模式:通信以轮询方式进行。
             所有数据处理的HAL状态在传输完成后由同一函数返回。
        (##) 非阻塞模式:通信使用中断或DMA进行,
             相关API返回HAL状态。
             数据处理的结束将通过专用SMARTCARD IRQ(使用中断模式时)或DMA IRQ(使用DMA模式时)指示。
        (##) HAL_SMARTCARD_TxCpltCallback()、HAL_SMARTCARD_RxCpltCallback()用户回调函数
             将分别在发送或接收过程结束时执行。
             当检测到通信错误时,将执行HAL_SMARTCARD_ErrorCallback()用户回调函数。

    (#) 阻塞模式API为:
        (##) HAL_SMARTCARD_Transmit()
        (##) HAL_SMARTCARD_Receive()

    (#) 使用中断的非阻塞模式API为:
        (##) HAL_SMARTCARD_Transmit_IT()
        (##) HAL_SMARTCARD_Receive_IT()
        (##) HAL_SMARTCARD_IRQHandler()

    (#) 使用DMA的非阻塞模式函数为:
        (##) HAL_SMARTCARD_Transmit_DMA()
        (##) HAL_SMARTCARD_Receive_DMA()

    (#) 在非阻塞模式下提供一组传输完成回调函数:
        (##) HAL_SMARTCARD_TxCpltCallback()
        (##) HAL_SMARTCARD_RxCpltCallback()
        (##) HAL_SMARTCARD_ErrorCallback()

  [..]
    (#) 非阻塞模式传输可以使用中止API中止:
        (##) HAL_SMARTCARD_Abort()
        (##) HAL_SMARTCARD_AbortTransmit()
        (##) HAL_SMARTCARD_AbortReceive()
        (##) HAL_SMARTCARD_Abort_IT()
        (##) HAL_SMARTCARD_AbortTransmit_IT()
        (##) HAL_SMARTCARD_AbortReceive_IT()

    (#) 对于基于中断的中止服务(HAL_SMARTCARD_Abortxxx_IT),
        提供一组中止完成回调函数:
        (##) HAL_SMARTCARD_AbortCpltCallback()
        (##) HAL_SMARTCARD_AbortTransmitCpltCallback()
        (##) HAL_SMARTCARD_AbortReceiveCpltCallback()

    (#) 在非阻塞模式传输中,可能的错误分为两类。
        错误处理如下:
       (##) 错误被视为可恢复且非阻塞:传输可以继续进行到底,但错误严重性
           由用户评估:这涉及帧错误、
           奇偶错误或噪声错误(中断模式接收时)。
           接收到的字符随后被检索并存储在Rx缓冲区中,
           设置错误代码以允许用户识别错误类型,
           并执行HAL_SMARTCARD_ErrorCallback()用户回调函数。传输在SMARTCARD端继续进行。
           如果用户想要中止它,应调用中止服务。
       (##) 错误被视为阻塞:传输无法正常完成并被中止。
           这涉及中断模式发送时的帧错误、中断模式接收时的溢出错误以及DMA模式下的所有错误。
           设置错误代码以允许用户识别错误类型,
           并执行HAL_SMARTCARD_ErrorCallback()用户回调函数。


函数文档

HAL_StatusTypeDef HAL_SMARTCARD_Abort ( SMARTCARD_HandleTypeDef hsmartcard)

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

参数:
hsmartcard指向SMARTCARD_HandleTypeDef结构的指针,该结构包含指定SMARTCARD模块的配置信息。
注意:
该过程可用于中止任何在中断模式或DMA模式下开始的正在进行的传输。此过程执行以下操作:
  • 禁用SMARTCARD中断(Tx和Rx)
  • 禁用外设寄存器中的DMA传输(如果已启用)
  • 通过调用HAL_DMA_Abort中止DMA传输(如果是DMA模式传输)
  • 将句柄状态设置为READY
此过程在阻塞模式下执行:退出函数时,中止被视为已完成。
返回值:
HAL状态

定义在文件 stm32g4xx_hal_smartcard.c 的第 1317 行。

引用 __HAL_SMARTCARD_CLEAR_FLAG, __SMARTCARD_HandleTypeDef::ErrorCode, __SMARTCARD_HandleTypeDef::gState, HAL_DMA_Abort(), HAL_DMA_ERROR_TIMEOUT, HAL_DMA_GetError(), HAL_SMARTCARD_ERROR_DMA, HAL_SMARTCARD_ERROR_NONE, HAL_SMARTCARD_STATE_READY, __SMARTCARD_HandleTypeDef::hdmarx, __SMARTCARD_HandleTypeDef::hdmatx, __SMARTCARD_HandleTypeDef::Instance, __SMARTCARD_HandleTypeDef::RxState, __SMARTCARD_HandleTypeDef::RxXferCount, SMARTCARD_CLEAR_EOBF, SMARTCARD_CLEAR_FEF, SMARTCARD_CLEAR_NEF, SMARTCARD_CLEAR_OREF, SMARTCARD_CLEAR_PEF, SMARTCARD_CLEAR_RTOF, __SMARTCARD_HandleTypeDef::TxXferCount, 和 __DMA_HandleTypeDef::XferAbortCallback

HAL_StatusTypeDef HAL_SMARTCARD_Abort_IT ( SMARTCARD_HandleTypeDef hsmartcard)

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

参数:
hsmartcard指向SMARTCARD_HandleTypeDef结构的指针,该结构包含指定SMARTCARD模块的配置信息。
注意:
该过程可用于中止任何在中断模式或DMA模式下开始的正在进行的传输。此过程执行以下操作:
  • 禁用SMARTCARD中断(Tx和Rx)
  • 禁用外设寄存器中的DMA传输(如果已启用)
  • 通过调用HAL_DMA_Abort_IT中止DMA传输(如果是DMA模式传输)
  • 将句柄状态设置为READY
  • 在中止完成时,调用用户中止完成回调函数