Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_hal_gpio.h (11637B)
1 /** 2 ****************************************************************************** 3 * @file stm32f1xx_hal_gpio.h 4 * @author MCD Application Team 5 * @brief Header file of GPIO HAL module. 6 ****************************************************************************** 7 * @attention 8 * 9 * Copyright (c) 2016 STMicroelectronics. 10 * All rights reserved. 11 * 12 * This software is licensed under terms that can be found in the LICENSE file 13 * in the root directory of this software component. 14 * If no LICENSE file comes with this software, it is provided AS-IS. 15 * 16 ****************************************************************************** 17 */ 18 19 /* Define to prevent recursive inclusion -------------------------------------*/ 20 #ifndef STM32F1xx_HAL_GPIO_H 21 #define STM32F1xx_HAL_GPIO_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Includes ------------------------------------------------------------------*/ 28 #include "stm32f1xx_hal_def.h" 29 30 /** @addtogroup STM32F1xx_HAL_Driver 31 * @{ 32 */ 33 34 /** @addtogroup GPIO 35 * @{ 36 */ 37 38 /* Exported types ------------------------------------------------------------*/ 39 /** @defgroup GPIO_Exported_Types GPIO Exported Types 40 * @{ 41 */ 42 43 /** 44 * @brief GPIO Init structure definition 45 */ 46 typedef struct { 47 uint32_t Pin; /*!< Specifies the GPIO pins to be configured. 48 This parameter can be any value of @ref GPIO_pins_define */ 49 50 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 51 This parameter can be a value of @ref GPIO_mode_define */ 52 53 uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. 54 This parameter can be a value of @ref GPIO_pull_define */ 55 56 uint32_t Speed; /*!< Specifies the speed for the selected pins. 57 This parameter can be a value of @ref GPIO_speed_define */ 58 } GPIO_InitTypeDef; 59 60 /** 61 * @brief GPIO Bit SET and Bit RESET enumeration 62 */ 63 typedef enum { 64 GPIO_PIN_RESET = 0u, GPIO_PIN_SET 65 } GPIO_PinState; 66 /** 67 * @} 68 */ 69 70 /* Exported constants --------------------------------------------------------*/ 71 72 /** @defgroup GPIO_Exported_Constants GPIO Exported Constants 73 * @{ 74 */ 75 76 /** @defgroup GPIO_pins_define GPIO pins define 77 * @{ 78 */ 79 #define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */ 80 #define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */ 81 #define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */ 82 #define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */ 83 #define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */ 84 #define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */ 85 #define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */ 86 #define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */ 87 #define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */ 88 #define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */ 89 #define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */ 90 #define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */ 91 #define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */ 92 #define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */ 93 #define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */ 94 #define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */ 95 #define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */ 96 97 #define GPIO_PIN_MASK 0x0000FFFFu /* PIN mask for assert test */ 98 /** 99 * @} 100 */ 101 102 /** @defgroup GPIO_mode_define GPIO mode define 103 * @brief GPIO Configuration Mode 104 * Elements values convention: 0xX0yz00YZ 105 * - X : GPIO mode or EXTI Mode 106 * - y : External IT or Event trigger detection 107 * - z : IO configuration on External IT or Event 108 * - Y : Output type (Push Pull or Open Drain) 109 * - Z : IO Direction mode (Input, Output, Alternate or Analog) 110 * @{ 111 */ 112 #define GPIO_MODE_INPUT 0x00000000u /*!< Input Floating Mode */ 113 #define GPIO_MODE_OUTPUT_PP 0x00000001u /*!< Output Push Pull Mode */ 114 #define GPIO_MODE_OUTPUT_OD 0x00000011u /*!< Output Open Drain Mode */ 115 #define GPIO_MODE_AF_PP 0x00000002u /*!< Alternate Function Push Pull Mode */ 116 #define GPIO_MODE_AF_OD 0x00000012u /*!< Alternate Function Open Drain Mode */ 117 #define GPIO_MODE_AF_INPUT GPIO_MODE_INPUT /*!< Alternate Function Input Mode */ 118 119 #define GPIO_MODE_ANALOG 0x00000003u /*!< Analog Mode */ 120 121 #define GPIO_MODE_IT_RISING 0x10110000u /*!< External Interrupt Mode with Rising edge trigger detection */ 122 #define GPIO_MODE_IT_FALLING 0x10210000u /*!< External Interrupt Mode with Falling edge trigger detection */ 123 #define GPIO_MODE_IT_RISING_FALLING 0x10310000u /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ 124 125 #define GPIO_MODE_EVT_RISING 0x10120000u /*!< External Event Mode with Rising edge trigger detection */ 126 #define GPIO_MODE_EVT_FALLING 0x10220000u /*!< External Event Mode with Falling edge trigger detection */ 127 #define GPIO_MODE_EVT_RISING_FALLING 0x10320000u /*!< External Event Mode with Rising/Falling edge trigger detection */ 128 129 /** 130 * @} 131 */ 132 133 /** @defgroup GPIO_speed_define GPIO speed define 134 * @brief GPIO Output Maximum frequency 135 * @{ 136 */ 137 #define GPIO_SPEED_FREQ_LOW (GPIO_CRL_MODE0_1) /*!< Low speed */ 138 #define GPIO_SPEED_FREQ_MEDIUM (GPIO_CRL_MODE0_0) /*!< Medium speed */ 139 #define GPIO_SPEED_FREQ_HIGH (GPIO_CRL_MODE0) /*!< High speed */ 140 141 /** 142 * @} 143 */ 144 145 /** @defgroup GPIO_pull_define GPIO pull define 146 * @brief GPIO Pull-Up or Pull-Down Activation 147 * @{ 148 */ 149 #define GPIO_NOPULL 0x00000000u /*!< No Pull-up or Pull-down activation */ 150 #define GPIO_PULLUP 0x00000001u /*!< Pull-up activation */ 151 #define GPIO_PULLDOWN 0x00000002u /*!< Pull-down activation */ 152 /** 153 * @} 154 */ 155 156 /** 157 * @} 158 */ 159 160 /* Exported macro ------------------------------------------------------------*/ 161 /** @defgroup GPIO_Exported_Macros GPIO Exported Macros 162 * @{ 163 */ 164 165 /** 166 * @brief Checks whether the specified EXTI line flag is set or not. 167 * @param __EXTI_LINE__: specifies the EXTI line flag to check. 168 * This parameter can be GPIO_PIN_x where x can be(0..15) 169 * @retval The new state of __EXTI_LINE__ (SET or RESET). 170 */ 171 #define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) 172 173 /** 174 * @brief Clears the EXTI's line pending flags. 175 * @param __EXTI_LINE__: specifies the EXTI lines flags to clear. 176 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 177 * @retval None 178 */ 179 #define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) 180 181 /** 182 * @brief Checks whether the specified EXTI line is asserted or not. 183 * @param __EXTI_LINE__: specifies the EXTI line to check. 184 * This parameter can be GPIO_PIN_x where x can be(0..15) 185 * @retval The new state of __EXTI_LINE__ (SET or RESET). 186 */ 187 #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__)) 188 189 /** 190 * @brief Clears the EXTI's line pending bits. 191 * @param __EXTI_LINE__: specifies the EXTI lines to clear. 192 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 193 * @retval None 194 */ 195 #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__)) 196 197 /** 198 * @brief Generates a Software interrupt on selected EXTI line. 199 * @param __EXTI_LINE__: specifies the EXTI line to check. 200 * This parameter can be GPIO_PIN_x where x can be(0..15) 201 * @retval None 202 */ 203 #define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__)) 204 /** 205 * @} 206 */ 207 208 /* Include GPIO HAL Extension module */ 209 #include "stm32f1xx_hal_gpio_ex.h" 210 211 /* Exported functions --------------------------------------------------------*/ 212 /** @addtogroup GPIO_Exported_Functions 213 * @{ 214 */ 215 216 /** @addtogroup GPIO_Exported_Functions_Group1 217 * @{ 218 */ 219 /* Initialization and de-initialization functions *****************************/ 220 void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); 221 void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); 222 /** 223 * @} 224 */ 225 226 /** @addtogroup GPIO_Exported_Functions_Group2 227 * @{ 228 */ 229 /* IO operation functions *****************************************************/ 230 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 231 void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, 232 GPIO_PinState PinState); 233 void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 234 HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 235 void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); 236 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); 237 238 /** 239 * @} 240 */ 241 242 /** 243 * @} 244 */ 245 /* Private types -------------------------------------------------------------*/ 246 /* Private variables ---------------------------------------------------------*/ 247 /* Private constants ---------------------------------------------------------*/ 248 /** @defgroup GPIO_Private_Constants GPIO Private Constants 249 * @{ 250 */ 251 252 /** 253 * @} 254 */ 255 256 /* Private macros ------------------------------------------------------------*/ 257 /** @defgroup GPIO_Private_Macros GPIO Private Macros 258 * @{ 259 */ 260 #define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) 261 #define IS_GPIO_PIN(PIN) (((((uint32_t)PIN) & GPIO_PIN_MASK ) != 0x00u) && ((((uint32_t)PIN) & ~GPIO_PIN_MASK) == 0x00u)) 262 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\ 263 ((MODE) == GPIO_MODE_OUTPUT_PP) ||\ 264 ((MODE) == GPIO_MODE_OUTPUT_OD) ||\ 265 ((MODE) == GPIO_MODE_AF_PP) ||\ 266 ((MODE) == GPIO_MODE_AF_OD) ||\ 267 ((MODE) == GPIO_MODE_IT_RISING) ||\ 268 ((MODE) == GPIO_MODE_IT_FALLING) ||\ 269 ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\ 270 ((MODE) == GPIO_MODE_EVT_RISING) ||\ 271 ((MODE) == GPIO_MODE_EVT_FALLING) ||\ 272 ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\ 273 ((MODE) == GPIO_MODE_ANALOG)) 274 #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || \ 275 ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || ((SPEED) == GPIO_SPEED_FREQ_HIGH)) 276 #define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \ 277 ((PULL) == GPIO_PULLDOWN)) 278 /** 279 * @} 280 */ 281 282 /* Private functions ---------------------------------------------------------*/ 283 /** @defgroup GPIO_Private_Functions GPIO Private Functions 284 * @{ 285 */ 286 287 /** 288 * @} 289 */ 290 291 /** 292 * @} 293 */ 294 295 /** 296 * @} 297 */ 298 299 #ifdef __cplusplus 300 } 301 #endif 302 303 #endif /* STM32F1xx_HAL_GPIO_H */ 304
