STM32G474xx HAL用户手册
stm32g4xx_hal_gpio.h
转到该文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_gpio.h
00004   * @author  MCD Application Team
00005   * @brief   GPIO HAL模块头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00013   * This software is licensed under terms that can be found in the LICENSE file
00014   * in the root directory of this software component.
00015   * If no LICENSE file comes with this software, it is provided AS-IS.
00016   *
00017   ******************************************************************************
00018   */
00019 
00020 /* Define to prevent recursive inclusion -------------------------------------*/
00021 #ifndef STM32G4xx_HAL_GPIO_H
00022 #define STM32G4xx_HAL_GPIO_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00028 /* Includes ------------------------------------------------------------------*/
00029 #include "stm32g4xx_hal_def.h"
00030 
00031 /** @addtogroup STM32G4xx_HAL_Driver
00032   * @{
00033   */
00034 
00035 /** @defgroup GPIO GPIO
00036   * @brief GPIO HAL模块驱动程序
00037   * @{
00038   */
00039 
00040 /* Exported types ------------------------------------------------------------*/
00041 
00042 /** @defgroup GPIO_Exported_Types GPIO导出的类型
00043   * @{
00044   */
00045 /**
00046   * @brief   GPIO初始化结构体定义
00047   */
00047 typedef struct
00049 {
00049   uint32_t Pin;        /*!< 指定要配置的GPIO引脚。
00050                            该参数可以是@ref GPIO_pins的任何值 */
00051 
00052   uint32_t Mode;       /*!< 指定所选引脚的工作模式。
00053                            该参数可以是@ref GPIO_mode的值 */
00054 
00055   uint32_t Pull;       /*!< 指定所选引脚的上拉或下拉激活。
00056                            该参数可以是@ref GPIO_pull的值 */
00057 
00058   uint32_t Speed;      /*!< 指定所选引脚的速度。
00059                            该参数可以是@ref GPIO_speed的值 */
00060 
00061   uint32_t Alternate;  /*!< 要连接到所选引脚的外设
00062                             该参数可以是@ref GPIOEx_Alternate_function_selection的值 */
00063 } GPIO_InitTypeDef;
00064 
00065 /**
00066   * @brief  GPIO引脚置位和复位枚举
00067   */
00068 typedef enum
00069 {
00070   GPIO_PIN_RESET = 0U,
00071   GPIO_PIN_SET
00072 } GPIO_PinState;
00073 /**
00074   * @}
00075   */
00076 
00077 /* Exported constants --------------------------------------------------------*/
00078 /** @defgroup GPIO_Exported_Constants GPIO导出的常量
00079   * @{
00080   */
00081 /** @defgroup GPIO_pins GPIO引脚
00082   * @{
00083   */
00084 #define GPIO_PIN_0                 ((uint16_t)0x0001)  /* 选择引脚0    */
00085 #define GPIO_PIN_1                 ((uint16_t)0x0002)  /* 选择引脚1    */
00086 #define GPIO_PIN_2                 ((uint16_t)0x0004)  /* 选择引脚2    */
00087 #define GPIO_PIN_3                 ((uint16_t)0x0008)  /* 选择引脚3    */
00088 #define GPIO_PIN_4                 ((uint16_t)0x0010)  /* 选择引脚4    */
00089 #define GPIO_PIN_5                 ((uint16_t)0x0020)  /* 选择引脚5    */
00090 #define GPIO_PIN_6                 ((uint16_t)0x0040)  /* 选择引脚6    */
00091 #define GPIO_PIN_7                 ((uint16_t)0x0080)  /* 选择引脚7    */
00092 #define GPIO_PIN_8                 ((uint16_t)0x0100)  /* 选择引脚8    */
00093 #define GPIO_PIN_9                 ((uint16_t)0x0200)  /* 选择引脚9    */
00094 #define GPIO_PIN_10                ((uint16_t)0x0400)  /* 选择引脚10   */
00095 #define GPIO_PIN_11                ((uint16_t)0x0800)  /* 选择引脚11   */
00096 #define GPIO_PIN_12                ((uint16_t)0x1000)  /* 选择引脚12   */
00097 #define GPIO_PIN_13                ((uint16_t)0x2000)  /* 选择引脚13   */
00098 #define GPIO_PIN_14                ((uint16_t)0x4000)  /* 选择引脚14   */
00099 #define GPIO_PIN_15                ((uint16_t)0x8000)  /* 选择引脚15   */
00100 #define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* 选择所有引脚 */
00101 
00102 #define GPIO_PIN_MASK              (0x0000FFFFU) /* 用于断言测试的引脚掩码 */
00103 /**
00104   * @}
00105   */
00106 
00107 /** @defgroup GPIO_mode GPIO模式
00108   * @brief GPIO配置模式
00109   *        元素值约定:0x00WX00YZ
00110   *           - W  : EXTI触发检测,3位
00111   *           - X  : EXTI模式(中断或事件),2位
00112   *           - Y  : 输出类型(推挽或开漏),1位
00113   *           - Z  : GPIO模式(输入、输出、复用功能或模拟),2位
00114   * @{
00115   */ 
00116 #define  GPIO_MODE_INPUT                        MODE_INPUT                                                  /*!< 输入浮空模式                   */
00117 #define  GPIO_MODE_OUTPUT_PP                    (MODE_OUTPUT | OUTPUT_PP)                                   /*!< 输出推挽模式                 */
00118 #define  GPIO_MODE_OUTPUT_OD                    (MODE_OUTPUT | OUTPUT_OD)                                   /*!< 输出开漏模式                */
00119 #define  GPIO_MODE_AF_PP                        (MODE_AF | OUTPUT_PP)                                       /*!< 复用功能推挽模式     */
00120 #define  GPIO_MODE_AF_OD                        (MODE_AF | OUTPUT_OD)                                       /*!< 复用功能开漏模式    */
00121 
00122 #define  GPIO_MODE_ANALOG                       MODE_ANALOG                                                 /*!< 模拟模式  */
00123     
00124 #define  GPIO_MODE_IT_RISING                    (MODE_INPUT | EXTI_IT | TRIGGER_RISING)                     /*!< 带上升沿触发检测的外部中断模式          */
00125 #define  GPIO_MODE_IT_FALLING                   (MODE_INPUT | EXTI_IT | TRIGGER_FALLING)                    /*!< 带下降沿触发检测的外部中断模式         */
00126 #define  GPIO_MODE_IT_RISING_FALLING            (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< 带上升/下降沿触发检测的外部中断模式  */
00127  
00128 #define  GPIO_MODE_EVT_RISING                   (MODE_INPUT | EXTI_EVT | TRIGGER_RISING)                     /*!< 带上升沿触发检测的外部事件模式             */
00129 #define  GPIO_MODE_EVT_FALLING                  (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING)                    /*!< 带下降沿触发检测的外部事件模式            */
00130 #define  GPIO_MODE_EVT_RISING_FALLING           (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING)   /*!< 带上升/下降沿触发检测的外部事件模式     */
00131 /**
00132   * @}
00133   */
00134 
00135 /** @defgroup GPIO_speed GPIO速度
00136   * @brief GPIO输出最大频率
00137   * @{
00138   */
00139 #define  GPIO_SPEED_FREQ_LOW        (0x00000000U)   /*!< 范围最高5 MHz,请参阅产品数据手册 */
00140 #define  GPIO_SPEED_FREQ_MEDIUM     (0x00000001U)   /*!< 范围5 MHz至25 MHz,请参阅产品数据手册 */
00141 #define  GPIO_SPEED_FREQ_HIGH       (0x00000002U)   /*!< 范围25 MHz至50 MHz,请参阅产品数据手册 */
00142 #define  GPIO_SPEED_FREQ_VERY_HIGH  (0x00000003U)   /*!< 范围50 MHz至120 MHz,请参阅产品数据手册 */
00143 /**
00144   * @}
00145   */
00146 
00147 /** @defgroup GPIO_pull GPIO上下拉
00148   * @brief GPIO上拉或下拉激活
00149   * @{
00150   */
00151 #define  GPIO_NOPULL        (0x000000