STM32G474xx HAL用户手册
stm32g4xx_hal_irda.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_irda.h
00004   * @author  MCD Application Team
00005   * @brief   IRDA HAL模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_IRDA_H
00021 #define STM32G4xx_HAL_IRDA_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32G4xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup IRDA
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 /** @defgroup IRDA_Exported_Types IRDA导出的类型
00040   * @{
00041   */
00042 
00043 /**
00044   * @brief IRDA初始化结构体定义
00045   */
00046 typedef struct
00047 {
00048   uint32_t BaudRate;                  /*!< 此成员配置IRDA通信波特率。
00049                                            波特率寄存器使用以下公式计算:
00050                                               波特率寄存器 = ((usart_ker_ckpres) / ((hirda->Init.BaudRate)))
00051                                            其中usart_ker_ckpres是IRDA输入时钟除以预分频器后的值 */
00052 
00053   uint32_t WordLength;                /*!< 指定帧中发送或接收的数据位数。
00054                                            此参数可以是@ref IRDAEx_Word_Length的值 */
00055 
00056   uint32_t Parity;                    /*!< 指定奇偶校验模式。
00057                                            此参数可以是@ref IRDA_Parity的值
00058                                            @note 当奇偶校验启用时,计算出的奇偶校验位被插入
00059                                                  到发送数据的MSB位置(当字长设置为9数据位时为第9位;
00060                                                  当字长设置为8数据位时为第8位)。 */
00061   */
00062 
00063   uint32_t Mode;                      /*!< 指定是启用还是禁用接收或发送模式。
00065                                            此参数可以是@ref IRDA_Transfer_Mode的值 */
00067 
00066   uint8_t  Prescaler;                 /*!< 指定分频器值,用于分频UART/USART源时钟
00069                                            以实现低功耗频率。
00070                                            @note 禁止使用预分频器值0 */
00072 
00070   uint16_t PowerMode;                 /*!< 指定IRDA电源模式。
00071                                            此参数可以是@ref IRDA_Low_Power的值 */
00073 
00073   uint32_t ClockPrescaler;            /*!< 指定用于分频IRDA时钟源的预分频器值。
00075                                            此参数可以是@ref IRDA_ClockPrescaler的值。 */
00076 
00076 } IRDA_InitTypeDef;
00078 
00079 /**
00079   * @brief HAL IRDA状态定义
00080   * @note  HAL IRDA状态值是2个不同子状态的组合:
00081   *        gState和RxState(参见@ref IRDA_State_Definition)。
00082   *        - gState包含与全局句柄管理相关的IRDA状态信息
00083   *          以及与Tx操作相关的信息。
00084   *          gState值编码遵循以下描述的位图:
00085   *          b7-b6  错误信息
00086   *             00 : 无错误
00087   *             01 : (未使用)
00088   *             10 : 超时
00089   *             11 : 错误
00090   *          b5     外设初始化状态
00091   *             0  : 复位(外设未初始化)
00092   *             1  : 初始化完成(外设已初始化。HAL IRDA初始化函数已调用)
00093   *          b4-b3  (未使用)
00094   *             xx : 应设置为00
00095   *          b2     固有进程状态
00096   *             0  : 就绪
00097   *             1  : 忙(外设正忙于某些配置或内部操作)
00098   *          b1     (未使用)
00099   *             x  : 应设置为0
00100   *          b0     Tx状态
00101   *             0  : 就绪(无Tx操作正在进行)
00102   *             1  : 忙(Tx操作正在进行)
00103   *        - RxState包含与Rx操作相关的信息。
00104   *          RxState值编码遵循以下描述的位图:
00105   *          b7-b6  (未使用)
00106   *             xx : 应设置为00
00107   *          b5     外设初始化状态
00108   *             0  : 复位(外设未初始化)
00109   *             1  : 初始化完成(外设已初始化)
00110   *          b4-b2  (未使用)
00111   *            xxx : 应设置为000
00112   *          b1     Rx状态
00113   *             0  : 就绪(无Rx操作正在进行)
00114   *             1  : 忙(Rx操作正在进行)
00115   *          b0     (未使用)
00116   *             x  : 应设置为0。
00117   */
00118 typedef uint32_t HAL_IRDA_StateTypeDef;
00119 
00120 /**
00121   * @brief IRDA时钟源定义
00122   */
00123 typedef enum
00124 {
00125   IRDA_CLOCKSOURCE_PCLK1      = 0x00U,    /*!< PCLK1时钟源         */
00126   IRDA_CLOCKSOURCE_PCLK2      = 0x01U,    /*!< PCLK2时钟源         */
00127   IRDA_CLOCKSOURCE_HSI        = 0x02U,    /*!< HSI时钟源           */
00128   IRDA_CLOCKSOURCE_SYSCLK     = 0x04U,    /*!< SYSCLK时钟源        */
00129   IRDA_CLOCKSOURCE_LSE        = 0x10U,    /*!< LSE时钟源           */
00130   IRDA_CLOCKSOURCE_UNDEFINED  = 0x20U     /*!< 未定义的时钟源     */
00131 } IRDA_ClockSourceTypeDef;
00132 
00133 /**
00134   * @brief  IRDA句柄结构体定义
00135   */
00136 #if (USE_HAL_IRDA_REGISTER_CALLBACKS == 1)
00137 typedef struct __IRDA_HandleTypeDef
00138 #else
00139 typedef struct
00140 #endif  /* USE_HAL_IRDA_REGISTER_CALLBACKS */
00141 {
00142   USART_TypeDef            *Instance;        /*!< USART寄存器基地址       */
00143 
00144   IRDA_InitTypeDef         Init;             /*!< IRDA通信参数      */
00145 
00146   const uint8_t            *pTxBuffPtr;      /*!< IRDA Tx传输缓冲区指针 */
00147 
00148   uint16_t                 TxXferSize;       /*!< IRDA Tx传输大小              */
00149 
00150   __IO uint16_t            TxXferCount;      /*!< IRDA Tx传输计数器           */
00151 
00152   uint8_t                  *pRxBuffPtr;      /*!< IRDA Rx传输缓冲区指针 */
00153 
00154   uint16_t                 RxXferSize;       /*!< IRDA Rx传输大小              */
00155 
00156   __IO uint16_t            RxXferCount;      /*!< IRDA Rx传输计数器           */
00157 
00158   uint16_t                 Mask;             /*!< USART RX RDR寄存器掩码         */
00159 
00160   DMA_HandleTypeDef        *