![]() |
|
|||
File indexing completed on 2025-05-11 08:23:35
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_gpio.h 0004 * @author MCD Application Team 0005 * @brief Header file of GPIO HAL module. 0006 ****************************************************************************** 0007 * @attention 0008 * 0009 * Copyright (c) 2017 STMicroelectronics. 0010 * All rights reserved. 0011 * 0012 * This software is licensed under terms that can be found in the LICENSE file 0013 * in the root directory of this software component. 0014 * If no LICENSE file comes with this software, it is provided AS-IS. 0015 * 0016 ****************************************************************************** 0017 */ 0018 0019 /* Define to prevent recursive inclusion -------------------------------------*/ 0020 #ifndef STM32H7xx_HAL_GPIO_H 0021 #define STM32H7xx_HAL_GPIO_H 0022 0023 #ifdef __cplusplus 0024 extern "C" { 0025 #endif 0026 0027 /* Includes ------------------------------------------------------------------*/ 0028 #include "stm32h7xx_hal_def.h" 0029 0030 /** @addtogroup STM32H7xx_HAL_Driver 0031 * @{ 0032 */ 0033 0034 /** @addtogroup GPIO 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 /** @defgroup GPIO_Exported_Types GPIO Exported Types 0040 * @ingroup RTEMSBSPsARMSTM32H7 0041 * @{ 0042 */ 0043 0044 /** 0045 * @brief GPIO Init structure definition 0046 */ 0047 typedef struct 0048 { 0049 uint32_t Pin; /*!< Specifies the GPIO pins to be configured. 0050 This parameter can be any value of @ref GPIO_pins_define */ 0051 0052 uint32_t Mode; /*!< Specifies the operating mode for the selected pins. 0053 This parameter can be a value of @ref GPIO_mode_define */ 0054 0055 uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins. 0056 This parameter can be a value of @ref GPIO_pull_define */ 0057 0058 uint32_t Speed; /*!< Specifies the speed for the selected pins. 0059 This parameter can be a value of @ref GPIO_speed_define */ 0060 0061 uint32_t Alternate; /*!< Peripheral to be connected to the selected pins. 0062 This parameter can be a value of @ref GPIO_Alternate_function_selection */ 0063 } GPIO_InitTypeDef; 0064 0065 /** 0066 * @brief GPIO Bit SET and Bit RESET enumeration 0067 */ 0068 typedef enum 0069 { 0070 GPIO_PIN_RESET = 0U, 0071 GPIO_PIN_SET 0072 } GPIO_PinState; 0073 /** 0074 * @} 0075 */ 0076 0077 /* Exported constants --------------------------------------------------------*/ 0078 0079 /** @defgroup GPIO_Exported_Constants GPIO Exported Constants 0080 * @ingroup RTEMSBSPsARMSTM32H7 0081 * @{ 0082 */ 0083 0084 /** @defgroup GPIO_pins_define GPIO pins define 0085 * @ingroup RTEMSBSPsARMSTM32H7 0086 * @{ 0087 */ 0088 #define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */ 0089 #define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */ 0090 #define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */ 0091 #define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */ 0092 #define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */ 0093 #define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */ 0094 #define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */ 0095 #define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */ 0096 #define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */ 0097 #define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */ 0098 #define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */ 0099 #define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */ 0100 #define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */ 0101 #define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */ 0102 #define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */ 0103 #define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */ 0104 #define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */ 0105 0106 #define GPIO_PIN_MASK (0x0000FFFFU) /* PIN mask for assert test */ 0107 /** 0108 * @} 0109 */ 0110 0111 /** @defgroup GPIO_mode_define GPIO mode define 0112 * @ingroup RTEMSBSPsARMSTM32H7 0113 * @brief GPIO Configuration Mode 0114 * Elements values convention: 0x00WX00YZ 0115 * - W : EXTI trigger detection on 3 bits 0116 * - X : EXTI mode (IT or Event) on 2 bits 0117 * - Y : Output type (Push Pull or Open Drain) on 1 bit 0118 * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits 0119 * @{ 0120 */ 0121 #define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */ 0122 #define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */ 0123 #define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */ 0124 #define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */ 0125 #define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */ 0126 #define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */ 0127 #define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */ 0128 #define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */ 0129 #define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */ 0130 0131 #define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */ 0132 #define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */ 0133 #define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Event Mode with Rising/Falling edge trigger detection */ 0134 /** 0135 * @} 0136 */ 0137 0138 /** @defgroup GPIO_speed_define GPIO speed define 0139 * @ingroup RTEMSBSPsARMSTM32H7 0140 * @brief GPIO Output Maximum frequency 0141 * @{ 0142 */ 0143 #define GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Low speed */ 0144 #define GPIO_SPEED_FREQ_MEDIUM (0x00000001U) /*!< Medium speed */ 0145 #define GPIO_SPEED_FREQ_HIGH (0x00000002U) /*!< Fast speed */ 0146 #define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< High speed */ 0147 /** 0148 * @} 0149 */ 0150 0151 /** @defgroup GPIO_pull_define GPIO pull define 0152 * @ingroup RTEMSBSPsARMSTM32H7 0153 * @brief GPIO Pull-Up or Pull-Down Activation 0154 * @{ 0155 */ 0156 #define GPIO_NOPULL (0x00000000U) /*!< No Pull-up or Pull-down activation */ 0157 #define GPIO_PULLUP (0x00000001U) /*!< Pull-up activation */ 0158 #define GPIO_PULLDOWN (0x00000002U) /*!< Pull-down activation */ 0159 /** 0160 * @} 0161 */ 0162 0163 /** 0164 * @} 0165 */ 0166 0167 /* Exported macro ------------------------------------------------------------*/ 0168 /** @defgroup GPIO_Exported_Macros GPIO Exported Macros 0169 * @ingroup RTEMSBSPsARMSTM32H7 0170 * @{ 0171 */ 0172 0173 /** 0174 * @brief Checks whether the specified EXTI line flag is set or not. 0175 * @param __EXTI_LINE__: specifies the EXTI line flag to check. 0176 * This parameter can be GPIO_PIN_x where x can be(0..15) 0177 * @retval The new state of __EXTI_LINE__ (SET or RESET). 0178 */ 0179 #define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__)) 0180 0181 /** 0182 * @brief Clears the EXTI's line pending flags. 0183 * @param __EXTI_LINE__: specifies the EXTI lines flags to clear. 0184 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 0185 * @retval None 0186 */ 0187 #define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__)) 0188 0189 /** 0190 * @brief Checks whether the specified EXTI line is asserted or not. 0191 * @param __EXTI_LINE__: specifies the EXTI line to check. 0192 * This parameter can be GPIO_PIN_x where x can be(0..15) 0193 * @retval The new state of __EXTI_LINE__ (SET or RESET). 0194 */ 0195 #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__)) 0196 0197 /** 0198 * @brief Clears the EXTI's line pending bits. 0199 * @param __EXTI_LINE__: specifies the EXTI lines to clear. 0200 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 0201 * @retval None 0202 */ 0203 #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__)) 0204 0205 #if defined(DUAL_CORE) 0206 /** 0207 * @brief Checks whether the specified EXTI line flag is set or not. 0208 * @param __EXTI_LINE__: specifies the EXTI line flag to check. 0209 * This parameter can be GPIO_PIN_x where x can be(0..15) 0210 * @retval The new state of __EXTI_LINE__ (SET or RESET). 0211 */ 0212 #define __HAL_GPIO_EXTID2_GET_FLAG(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__)) 0213 0214 /** 0215 * @brief Clears the EXTI's line pending flags. 0216 * @param __EXTI_LINE__: specifies the EXTI lines flags to clear. 0217 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 0218 * @retval None 0219 */ 0220 #define __HAL_GPIO_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__)) 0221 0222 /** 0223 * @brief Checks whether the specified EXTI line is asserted or not. 0224 * @param __EXTI_LINE__: specifies the EXTI line to check. 0225 * This parameter can be GPIO_PIN_x where x can be(0..15) 0226 * @retval The new state of __EXTI_LINE__ (SET or RESET). 0227 */ 0228 #define __HAL_GPIO_EXTID2_GET_IT(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__)) 0229 0230 /** 0231 * @brief Clears the EXTI's line pending bits. 0232 * @param __EXTI_LINE__: specifies the EXTI lines to clear. 0233 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15) 0234 * @retval None 0235 */ 0236 #define __HAL_GPIO_EXTID2_CLEAR_IT(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__)) 0237 #endif 0238 0239 /** 0240 * @brief Generates a Software interrupt on selected EXTI line. 0241 * @param __EXTI_LINE__: specifies the EXTI line to check. 0242 * This parameter can be GPIO_PIN_x where x can be(0..15) 0243 * @retval None 0244 */ 0245 #define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER1 |= (__EXTI_LINE__)) 0246 /** 0247 * @} 0248 */ 0249 0250 /* Include GPIO HAL Extension module */ 0251 #include "stm32h7xx_hal_gpio_ex.h" 0252 0253 /* Exported functions --------------------------------------------------------*/ 0254 /** @addtogroup GPIO_Exported_Functions 0255 * @{ 0256 */ 0257 0258 /** @addtogroup GPIO_Exported_Functions_Group1 0259 * @{ 0260 */ 0261 /* Initialization and de-initialization functions *****************************/ 0262 void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init); 0263 void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin); 0264 /** 0265 * @} 0266 */ 0267 0268 /** @addtogroup GPIO_Exported_Functions_Group2 0269 * @{ 0270 */ 0271 /* IO operation functions *****************************************************/ 0272 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 0273 void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); 0274 void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 0275 HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); 0276 void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); 0277 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin); 0278 0279 /** 0280 * @} 0281 */ 0282 0283 /** 0284 * @} 0285 */ 0286 /* Private types -------------------------------------------------------------*/ 0287 /* Private variables ---------------------------------------------------------*/ 0288 /* Private constants ---------------------------------------------------------*/ 0289 /** @defgroup GPIO_Private_Constants GPIO Private Constants 0290 * @ingroup RTEMSBSPsARMSTM32H7 0291 * @{ 0292 */ 0293 #define GPIO_MODE_Pos 0u 0294 #define GPIO_MODE (0x3uL << GPIO_MODE_Pos) 0295 #define MODE_INPUT (0x0uL << GPIO_MODE_Pos) 0296 #define MODE_OUTPUT (0x1uL << GPIO_MODE_Pos) 0297 #define MODE_AF (0x2uL << GPIO_MODE_Pos) 0298 #define MODE_ANALOG (0x3uL << GPIO_MODE_Pos) 0299 #define OUTPUT_TYPE_Pos 4u 0300 #define OUTPUT_TYPE (0x1uL << OUTPUT_TYPE_Pos) 0301 #define OUTPUT_PP (0x0uL << OUTPUT_TYPE_Pos) 0302 #define OUTPUT_OD (0x1uL << OUTPUT_TYPE_Pos) 0303 #define EXTI_MODE_Pos 16u 0304 #define EXTI_MODE (0x3uL << EXTI_MODE_Pos) 0305 #define EXTI_IT (0x1uL << EXTI_MODE_Pos) 0306 #define EXTI_EVT (0x2uL << EXTI_MODE_Pos) 0307 #define TRIGGER_MODE_Pos 20u 0308 #define TRIGGER_MODE (0x7uL << TRIGGER_MODE_Pos) 0309 #define TRIGGER_RISING (0x1uL << TRIGGER_MODE_Pos) 0310 #define TRIGGER_FALLING (0x2uL << TRIGGER_MODE_Pos) 0311 #define TRIGGER_LEVEL (0x4uL << TRIGGER_MODE_Pos) 0312 /** 0313 * @} 0314 */ 0315 0316 /* Private macros ------------------------------------------------------------*/ 0317 /** @defgroup GPIO_Private_Macros GPIO Private Macros 0318 * @ingroup RTEMSBSPsARMSTM32H7 0319 * @{ 0320 */ 0321 #define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET)) 0322 #define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\ 0323 (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U)) 0324 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\ 0325 ((MODE) == GPIO_MODE_OUTPUT_PP) ||\ 0326 ((MODE) == GPIO_MODE_OUTPUT_OD) ||\ 0327 ((MODE) == GPIO_MODE_AF_PP) ||\ 0328 ((MODE) == GPIO_MODE_AF_OD) ||\ 0329 ((MODE) == GPIO_MODE_IT_RISING) ||\ 0330 ((MODE) == GPIO_MODE_IT_FALLING) ||\ 0331 ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\ 0332 ((MODE) == GPIO_MODE_EVT_RISING) ||\ 0333 ((MODE) == GPIO_MODE_EVT_FALLING) ||\ 0334 ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\ 0335 ((MODE) == GPIO_MODE_ANALOG)) 0336 #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \ 0337 ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH)) 0338 0339 #define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \ 0340 ((PULL) == GPIO_PULLDOWN)) 0341 0342 /** 0343 * @} 0344 */ 0345 0346 /* Private functions ---------------------------------------------------------*/ 0347 /** @defgroup GPIO_Private_Functions GPIO Private Functions 0348 * @ingroup RTEMSBSPsARMSTM32H7 0349 * @{ 0350 */ 0351 0352 /** 0353 * @} 0354 */ 0355 0356 /** 0357 * @} 0358 */ 0359 0360 /** 0361 * @} 0362 */ 0363 0364 #ifdef __cplusplus 0365 } 0366 #endif 0367 0368 #endif /* STM32H7xx_HAL_GPIO_H */ 0369
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |