|
STM32G474xx HAL 用户手册
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32g4xx_hal_usart.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_H 00021 #define STM32G4xx_HAL_USART_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 USART 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 /** @defgroup USART_Exported_Types USART 导出类型 00040 * @{ 00041 */ 00042 00043 /** 00044 * @brief USART 初始化结构体定义 00045 */ 00046 typedef struct 00047 { 00048 uint32_t BaudRate; /*!< 此成员配置Usart通信波特率。 00049 波特率使用以下公式计算: 00050 Baud Rate Register[15:4] = ((2 * fclk_pres) / 00051 ((huart->Init.BaudRate)))[15:4] 00052 Baud Rate Register[3] = 0 00053 Baud Rate Register[2:0] = (((2 * fclk_pres) / 00054 ((huart->Init.BaudRate)))[3:0]) >> 1 00055 其中 fclk_pres 是USART输入时钟频率 (fclk) 00056 除以一个预分频器。 00057 @note 为实现高波特率,系统性地应用了8倍过采样。 */ 00058 */ 00059 00060 uint32_t WordLength; /*!< 指定在一帧中传输或接收的数据位数。 00061 此参数可以是 @ref USARTEx_Word_Length 的值。 */ 00062 00063 uint32_t StopBits; /*!< 指定传输的停止位数。 00064 此参数可以是 @ref USART_Stop_Bits 的值。 */ 00065 00066 uint32_t Parity; /*!< 指定奇偶校验模式。 00067 此参数可以是 @ref USART_Parity 的值 00068 @note 当启用奇偶校验时,计算出的奇偶校验位将被插入 00069 到传输数据的最高有效位位置(当字长设置为9位数据位时为第9位;当 00070 字长设置为8位数据位时为第8位)。 */ 00071 00072 00073 uint32_t Mode; /*!< 指定接收或发送模式是启用还是禁用。 00074 此参数可以是 @ref USART_Mode 的值。 */ 00075 00076 uint32_t CLKPolarity; /*!< 指定串行时钟的稳态。 00077 此参数可以是 @ref USART_Clock_Polarity 的值。 */ 00078 00079 uint32_t CLKPhase; /*!< 指定进行位捕获的时钟沿。 00080 此参数可以是 @ref USART_Clock_Phase 的值。 */ 00081 00082 uint32_t CLKLastBit; /*!< 指定在同步模式下,对应于最后一个传输数据位(MSB)的时钟脉冲 00083 是否必须在SCLK引脚上输出。 00084 此参数可以是 @ref USART_Last_Bit 的值。 */ 00085 00086 uint32_t ClockPrescaler; /*!< 指定用于分频USART时钟源的预分频器值。 00087 此参数可以是 @ref USART_ClockPrescaler 的值。 */ 00088 } USART_InitTypeDef; 00089 00090 /** 00091 * @brief HAL USART 状态结构体定义 00092 */ 00093 typedef enum 00094 { 00095 HAL_USART_STATE_RESET = 0x00U, /*!< 外设未初始化 */ 00096 HAL_USART_STATE_READY = 0x01U, /*!< 外设已初始化并准备就绪 */ 00097 HAL_USART_STATE_BUSY = 0x02U, /*!< 内部进程正在进行 */ 00098 HAL_USART_STATE_BUSY_TX = 0x12U, /*!< 数据传输进程正在进行 */ 00099 HAL_USART_STATE_BUSY_RX = 0x22U, /*!< 数据接收进程正在进行 */ 00100 HAL_USART_STATE_BUSY_TX_RX = 0x32U, /*!< 数据传输接收进程正在进行 */ 00101 HAL_USART_STATE_TIMEOUT = 0x03U, /*!< 超时状态 */ 00102 HAL_USART_STATE_ERROR = 0x04U /*!< 错误 */ 00103 } HAL_USART_StateTypeDef; 00104 00105 /** 00106 * @brief USART 时钟源定义 00107 */ 00108 typedef enum 00109 { 00110 USART_CLOCKSOURCE_PCLK1 = 0x00U, /*!< PCLK1 时钟源 */ 00111 USART_CLOCKSOURCE_PCLK2 = 0x01U, /*!< PCLK2 时钟源 */ 00112 USART_CLOCKSOURCE_HSI = 0x02U, /*!< HSI 时钟源 */ 00113 USART_CLOCKSOURCE_SYSCLK = 0x04U, /*!< SYSCLK 时钟源 */ 00114 USART_CLOCKSOURCE_LSE = 0x08U, /*!< LSE 时钟源 */ 00115 USART_CLOCKSOURCE_UNDEFINED = 0x10U /*!< 未定义的时钟源 */ 00116 }