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