|
STM32G474xx HAL 用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_usart_ex.h 00004 * @author MCD Application Team 00005 * @brief USART 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_USART_EX_H 00021 #define STM32G4xx_HAL_USART_EX_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 USARTEx 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 /* Exported constants --------------------------------------------------------*/ 00040 /** @defgroup USARTEx_Exported_Constants USARTEx 导出常量 00041 * @{ 00042 */ 00043 00044 /** @defgroup USARTEx_Word_Length USARTEx 字长 00045 * @{ 00046 */ 00047 #define USART_WORDLENGTH_7B (USART_CR1_M1) /*!< 7位长的USART帧 */ 00048 #define USART_WORDLENGTH_8B (0x00000000U) /*!< 8位长的USART帧 */ 00049 #define USART_WORDLENGTH_9B (USART_CR1_M0) /*!< 9位长的USART帧 */ 00050 /** 00051 * @} 00052 */ 00053 00054 /** @defgroup USARTEx_Slave_Select_management USARTEx 从机选择管理 00055 * @{ 00056 */ 00057 #define USART_NSS_HARD 0x00000000U /*!< SPI从机选择取决于NSS输入引脚 */ 00058 #define USART_NSS_SOFT USART_CR2_DIS_NSS /*!< SPI从机始终被选中,忽略NSS输入引脚 */ 00059 /** 00060 * @} 00061 */ 00062 00063 00064 /** @defgroup USARTEx_Slave_Mode USARTEx 同步从机模式使能 00065 * @brief USART 从机模式 00066 * @{ 00067 */ 00068 #define USART_SLAVEMODE_DISABLE 0x00000000U /*!< USART SPI从机模式使能 */ 00069 #define USART_SLAVEMODE_ENABLE USART_CR2_SLVEN /*!< USART SPI从机模式禁用 */ 00070 /** 00071 * @} 00072 */ 00073 00074 /** @defgroup USARTEx_FIFO_mode USARTEx FIFO 模式 00075 * @brief USART FIFO 模式 00076 * @{ 00077 */ 00078 #define USART_FIFOMODE_DISABLE 0x00000000U /*!< FIFO模式禁用 */ 00079 #define USART_FIFOMODE_ENABLE USART_CR1_FIFOEN /*!< FIFO模式使能 */ 00080 /** 00081 * @} 00082 */ 00083 00084 /** @defgroup USARTEx_TXFIFO_threshold_level USARTEx TXFIFO 阈值级别 00085 * @brief USART TXFIFO 级别 00086 * @{ 00087 */ 00088 #define USART_TXFIFO_THRESHOLD_1_8 0x00000000U /*!< TXFIFO达到其深度的1/8 */ 00089 #define USART_TXFIFO_THRESHOLD_1_4 USART_CR3_TXFTCFG_0 /*!< TXFIFO达到其深度的1/4 */ 00090 #define USART_TXFIFO_THRESHOLD_1_2 USART_CR3_TXFTCFG_1 /*!< TXFIFO达到其深度的1/2 */ 00091 #define USART_TXFIFO_THRESHOLD_3_4 (USART_CR3_TXFTCFG_0|USART_CR3_TXFTCFG_1) /*!< TXFIFO达到其深度的3/4 */ 00092 #define USART_TXFIFO_THRESHOLD_7_8 USART_CR3_TXFTCFG_2 /*!< TXFIFO达到其深度的7/8 */ 00093 #define USART_TXFIFO_THRESHOLD_8_8 (USART_CR3_TXFTCFG_2|USART_CR3_TXFTCFG_0) /*!< TXFIFO变为空 */ 00094 /** 00095 * @} 00096 */ 00097 00098 /** @defgroup USARTEx_RXFIFO_threshold_level USARTEx RXFIFO 阈值级别 00099 * @brief USART RXFIFO 级别 00100 * @{ 00101 */ 00102 #define USART_RXFIFO_THRESHOLD_1_8 0x00000000U /*!< RXFIFO达到其深度的1/8 */ 00103 #define USART_RXFIFO_THRESHOLD_1_4 USART_CR3_RXFTCFG_0 /*!< RXFIFO达到其深度的1/4 */ 00104 #define USART_RXFIFO_THRESHOLD_1_2 USART_CR3_RXFTCFG_1 /*!< RXFIFO达到其深度的1/2 */ 00105 #define USART_RXFIFO_THRESHOLD_3_4 (USART_CR3_RXFTCFG_0|USART_CR3_RXFTCFG_1) /*!< RXFIFO达到其深度的3/4 */ 00106 #define USART_RXFIFO_THRESHOLD_7_8 USART_CR3_RXFTCFG_2 /*!< RXFIFO达到其深度的7/8 */ 00107 #define USART_RXFIFO_THRESHOLD_8_8 (USART_CR3_RXFTCFG_2|USART_CR3_RXFTCFG_0) /*!< RXFIFO变满 */ 00108 /** 00109 * @} 00110 */ 00111 00112 /** 00113 * @} 00114 */ 00115 00116 /* Private macros ------------------------------------------------------------*/ 00117 /** @defgroup USARTEx_Private_Macros USARTEx 私有宏 00118 * @{ 00119 */ 00120 00121 /** @brief 计算用于检索接收数据的USART掩码 00122 * 根据字长和奇偶校验位激活情况。 00123 * @note 如果 PCE = 1,奇偶校验位不包含在接收API()提取的数据中。 00124 * 在DMA传输的情况下不执行此掩码操作。 00125 * @param __HANDLE__ 指定USART句柄。 00126 * @retval 无,应用于USART RDR寄存器的掩码存储在(__HANDLE__)->Mask字段中。 00127 */ 00128 #define USART_MASK_COMPUTATION(__HANDLE__) \ 00129 do { \ 00130 if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_9B) \ 00131 { \ 00132 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 00133 { \ 00134 (__HANDLE__)->Mask = 0x01FFU; \ 00135 } \ 00136 else \ 00137 { \ 00138 (__HANDLE__)->Mask = 0x00FFU; \ 00139 } \ 00140 } \ 00141 else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_8B) \ 00142 { \ 00143 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 00144 { \ 00145 (__HANDLE__)->Mask = 0x00FFU; \ 00146 } \ 00147 else \ 00148 { \ 00149 (__HANDLE__)->Mask = 0x007FU; \ 00150 } \ 00151 } \ 00152 else if ((__HANDLE__)->Init.WordLength == USART_WORDLENGTH_7B) \ 00153 { \ 00154 if ((__HANDLE__)->Init.Parity == USART_PARITY_NONE) \ 00155 { \ 00156 (__HANDLE__)->Mask = 0x007FU; \ 00157 } \ 00158 else \ 00159