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