STM32G474xx HAL 用户手册
stm32g4xx_hal_usart.h
转到此文件的文档。
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 }