|
STM32G474xx HAL用户手册
|
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 *