]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL/ST_Library/include/stm32f7xx_hal_gpio.h
Update version number ready for V8.2.1 release.
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL / ST_Library / include / stm32f7xx_hal_gpio.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_gpio.h\r
4   * @author  MCD Application Team\r
5   * @version V0.3.0\r
6   * @date    06-March-2015\r
7   * @brief   Header file of GPIO HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_GPIO_H\r
40 #define __STM32F7xx_HAL_GPIO_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup GPIO\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58 /** @defgroup GPIO_Exported_Types GPIO Exported Types\r
59   * @{\r
60   */\r
61 \r
62 /** \r
63   * @brief GPIO Init structure definition  \r
64   */ \r
65 typedef struct\r
66 {\r
67   uint32_t Pin;       /*!< Specifies the GPIO pins to be configured.\r
68                            This parameter can be any value of @ref GPIO_pins_define */\r
69 \r
70   uint32_t Mode;      /*!< Specifies the operating mode for the selected pins.\r
71                            This parameter can be a value of @ref GPIO_mode_define */\r
72 \r
73   uint32_t Pull;      /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.\r
74                            This parameter can be a value of @ref GPIO_pull_define */\r
75 \r
76   uint32_t Speed;     /*!< Specifies the speed for the selected pins.\r
77                            This parameter can be a value of @ref GPIO_speed_define */\r
78 \r
79   uint32_t Alternate;  /*!< Peripheral to be connected to the selected pins. \r
80                             This parameter can be a value of @ref GPIO_Alternate_function_selection */\r
81 }GPIO_InitTypeDef;\r
82 \r
83 /** \r
84   * @brief  GPIO Bit SET and Bit RESET enumeration \r
85   */\r
86 typedef enum\r
87 {\r
88   GPIO_PIN_RESET = 0,\r
89   GPIO_PIN_SET\r
90 }GPIO_PinState;\r
91 /**\r
92   * @}\r
93   */\r
94 \r
95 /* Exported constants --------------------------------------------------------*/\r
96 \r
97 /** @defgroup GPIO_Exported_Constants GPIO Exported Constants\r
98   * @{\r
99   */ \r
100 \r
101 /** @defgroup GPIO_pins_define GPIO pins define\r
102   * @{\r
103   */\r
104 #define GPIO_PIN_0                 ((uint16_t)0x0001)  /* Pin 0 selected    */\r
105 #define GPIO_PIN_1                 ((uint16_t)0x0002)  /* Pin 1 selected    */\r
106 #define GPIO_PIN_2                 ((uint16_t)0x0004)  /* Pin 2 selected    */\r
107 #define GPIO_PIN_3                 ((uint16_t)0x0008)  /* Pin 3 selected    */\r
108 #define GPIO_PIN_4                 ((uint16_t)0x0010)  /* Pin 4 selected    */\r
109 #define GPIO_PIN_5                 ((uint16_t)0x0020)  /* Pin 5 selected    */\r
110 #define GPIO_PIN_6                 ((uint16_t)0x0040)  /* Pin 6 selected    */\r
111 #define GPIO_PIN_7                 ((uint16_t)0x0080)  /* Pin 7 selected    */\r
112 #define GPIO_PIN_8                 ((uint16_t)0x0100)  /* Pin 8 selected    */\r
113 #define GPIO_PIN_9                 ((uint16_t)0x0200)  /* Pin 9 selected    */\r
114 #define GPIO_PIN_10                ((uint16_t)0x0400)  /* Pin 10 selected   */\r
115 #define GPIO_PIN_11                ((uint16_t)0x0800)  /* Pin 11 selected   */\r
116 #define GPIO_PIN_12                ((uint16_t)0x1000)  /* Pin 12 selected   */\r
117 #define GPIO_PIN_13                ((uint16_t)0x2000)  /* Pin 13 selected   */\r
118 #define GPIO_PIN_14                ((uint16_t)0x4000)  /* Pin 14 selected   */\r
119 #define GPIO_PIN_15                ((uint16_t)0x8000)  /* Pin 15 selected   */\r
120 #define GPIO_PIN_All               ((uint16_t)0xFFFF)  /* All pins selected */\r
121 \r
122 #define GPIO_PIN_MASK              ((uint32_t)0x0000FFFF) /* PIN mask for assert test */\r
123 /**\r
124   * @}\r
125   */\r
126 \r
127 /** @defgroup GPIO_mode_define GPIO mode define\r
128   * @brief GPIO Configuration Mode \r
129   *        Elements values convention: 0xX0yz00YZ\r
130   *           - X  : GPIO mode or EXTI Mode\r
131   *           - y  : External IT or Event trigger detection \r
132   *           - z  : IO configuration on External IT or Event\r
133   *           - Y  : Output type (Push Pull or Open Drain)\r
134   *           - Z  : IO Direction mode (Input, Output, Alternate or Analog)\r
135   * @{\r
136   */ \r
137 #define  GPIO_MODE_INPUT                        ((uint32_t)0x00000000)   /*!< Input Floating Mode                   */\r
138 #define  GPIO_MODE_OUTPUT_PP                    ((uint32_t)0x00000001)   /*!< Output Push Pull Mode                 */\r
139 #define  GPIO_MODE_OUTPUT_OD                    ((uint32_t)0x00000011)   /*!< Output Open Drain Mode                */\r
140 #define  GPIO_MODE_AF_PP                        ((uint32_t)0x00000002)   /*!< Alternate Function Push Pull Mode     */\r
141 #define  GPIO_MODE_AF_OD                        ((uint32_t)0x00000012)   /*!< Alternate Function Open Drain Mode    */\r
142 \r
143 #define  GPIO_MODE_ANALOG                       ((uint32_t)0x00000003)   /*!< Analog Mode  */\r
144     \r
145 #define  GPIO_MODE_IT_RISING                    ((uint32_t)0x10110000)   /*!< External Interrupt Mode with Rising edge trigger detection          */\r
146 #define  GPIO_MODE_IT_FALLING                   ((uint32_t)0x10210000)   /*!< External Interrupt Mode with Falling edge trigger detection         */\r
147 #define  GPIO_MODE_IT_RISING_FALLING            ((uint32_t)0x10310000)   /*!< External Interrupt Mode with Rising/Falling edge trigger detection  */\r
148  \r
149 #define  GPIO_MODE_EVT_RISING                   ((uint32_t)0x10120000)   /*!< External Event Mode with Rising edge trigger detection               */\r
150 #define  GPIO_MODE_EVT_FALLING                  ((uint32_t)0x10220000)   /*!< External Event Mode with Falling edge trigger detection              */\r
151 #define  GPIO_MODE_EVT_RISING_FALLING           ((uint32_t)0x10320000)   /*!< External Event Mode with Rising/Falling edge trigger detection       */\r
152 /**\r
153   * @}\r
154   */\r
155 \r
156 /** @defgroup GPIO_speed_define  GPIO speed define\r
157   * @brief GPIO Output Maximum frequency\r
158   * @{\r
159   */  \r
160 #define  GPIO_SPEED_LOW         ((uint32_t)0x00000000)  /*!< Low speed     */\r
161 #define  GPIO_SPEED_MEDIUM      ((uint32_t)0x00000001)  /*!< Medium speed  */\r
162 #define  GPIO_SPEED_FAST        ((uint32_t)0x00000002)  /*!< Fast speed    */\r
163 #define  GPIO_SPEED_HIGH        ((uint32_t)0x00000003)  /*!< High speed    */\r
164 /**\r
165   * @}\r
166   */\r
167 \r
168  /** @defgroup GPIO_pull_define GPIO pull define\r
169    * @brief GPIO Pull-Up or Pull-Down Activation\r
170    * @{\r
171    */  \r
172 #define  GPIO_NOPULL        ((uint32_t)0x00000000)   /*!< No Pull-up or Pull-down activation  */\r
173 #define  GPIO_PULLUP        ((uint32_t)0x00000001)   /*!< Pull-up activation                  */\r
174 #define  GPIO_PULLDOWN      ((uint32_t)0x00000002)   /*!< Pull-down activation                */\r
175 /**\r
176   * @}\r
177   */\r
178   \r
179 /**\r
180   * @}\r
181   */\r
182 \r
183 /* Exported macro ------------------------------------------------------------*/\r
184 /** @defgroup GPIO_Exported_Macros GPIO Exported Macros\r
185   * @{\r
186   */\r
187 \r
188 /**\r
189   * @brief  Checks whether the specified EXTI line flag is set or not.\r
190   * @param  __EXTI_LINE__: specifies the EXTI line flag to check.\r
191   *         This parameter can be GPIO_PIN_x where x can be(0..15)\r
192   * @retval The new state of __EXTI_LINE__ (SET or RESET).\r
193   */\r
194 #define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))\r
195 \r
196 /**\r
197   * @brief  Clears the EXTI's line pending flags.\r
198   * @param  __EXTI_LINE__: specifies the EXTI lines flags to clear.\r
199   *         This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\r
200   * @retval None\r
201   */\r
202 #define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))\r
203 \r
204 /**\r
205   * @brief  Checks whether the specified EXTI line is asserted or not.\r
206   * @param  __EXTI_LINE__: specifies the EXTI line to check.\r
207   *          This parameter can be GPIO_PIN_x where x can be(0..15)\r
208   * @retval The new state of __EXTI_LINE__ (SET or RESET).\r
209   */\r
210 #define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR & (__EXTI_LINE__))\r
211 \r
212 /**\r
213   * @brief  Clears the EXTI's line pending bits.\r
214   * @param  __EXTI_LINE__: specifies the EXTI lines to clear.\r
215   *          This parameter can be any combination of GPIO_PIN_x where x can be (0..15)\r
216   * @retval None\r
217   */\r
218 #define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR = (__EXTI_LINE__))\r
219 \r
220 /**\r
221   * @brief  Generates a Software interrupt on selected EXTI line.\r
222   * @param  __EXTI_LINE__: specifies the EXTI line to check.\r
223   *          This parameter can be GPIO_PIN_x where x can be(0..15)\r
224   * @retval None\r
225   */\r
226 #define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER |= (__EXTI_LINE__))\r
227 /**\r
228   * @}\r
229   */\r
230 \r
231 /* Include GPIO HAL Extension module */\r
232 #include "stm32f7xx_hal_gpio_ex.h"\r
233 \r
234 /* Exported functions --------------------------------------------------------*/\r
235 /** @addtogroup GPIO_Exported_Functions\r
236   * @{\r
237   */\r
238 \r
239 /** @addtogroup GPIO_Exported_Functions_Group1\r
240   * @{\r
241   */\r
242 /* Initialization and de-initialization functions *****************************/\r
243 void  HAL_GPIO_Init(GPIO_TypeDef  *GPIOx, GPIO_InitTypeDef *GPIO_Init);\r
244 void  HAL_GPIO_DeInit(GPIO_TypeDef  *GPIOx, uint32_t GPIO_Pin);\r
245 /**\r
246   * @}\r
247   */\r
248 \r
249 /** @addtogroup GPIO_Exported_Functions_Group2\r
250   * @{\r
251   */\r
252 /* IO operation functions *****************************************************/\r
253 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
254 void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);\r
255 void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
256 HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);\r
257 void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);\r
258 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);\r
259 \r
260 /**\r
261   * @}\r
262   */ \r
263 \r
264 /**\r
265   * @}\r
266   */ \r
267 /* Private types -------------------------------------------------------------*/\r
268 /* Private variables ---------------------------------------------------------*/\r
269 /* Private constants ---------------------------------------------------------*/\r
270 /** @defgroup GPIO_Private_Constants GPIO Private Constants\r
271   * @{\r
272   */\r
273 \r
274 /**\r
275   * @}\r
276   */\r
277 \r
278 /* Private macros ------------------------------------------------------------*/\r
279 /** @defgroup GPIO_Private_Macros GPIO Private Macros\r
280   * @{\r
281   */\r
282 #define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))\r
283 #define IS_GPIO_PIN(PIN)           (((PIN) & GPIO_PIN_MASK ) != (uint32_t)0x00)\r
284 #define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT)              ||\\r
285                             ((MODE) == GPIO_MODE_OUTPUT_PP)          ||\\r
286                             ((MODE) == GPIO_MODE_OUTPUT_OD)          ||\\r
287                             ((MODE) == GPIO_MODE_AF_PP)              ||\\r
288                             ((MODE) == GPIO_MODE_AF_OD)              ||\\r
289                             ((MODE) == GPIO_MODE_IT_RISING)          ||\\r
290                             ((MODE) == GPIO_MODE_IT_FALLING)         ||\\r
291                             ((MODE) == GPIO_MODE_IT_RISING_FALLING)  ||\\r
292                             ((MODE) == GPIO_MODE_EVT_RISING)         ||\\r
293                             ((MODE) == GPIO_MODE_EVT_FALLING)        ||\\r
294                             ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\\r
295                             ((MODE) == GPIO_MODE_ANALOG))\r
296 #define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_LOW)  || ((SPEED) == GPIO_SPEED_MEDIUM) || \\r
297                               ((SPEED) == GPIO_SPEED_FAST) || ((SPEED) == GPIO_SPEED_HIGH))\r
298 #define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \\r
299                             ((PULL) == GPIO_PULLDOWN))\r
300 /**\r
301   * @}\r
302   */\r
303 \r
304 /* Private functions ---------------------------------------------------------*/\r
305 /** @defgroup GPIO_Private_Functions GPIO Private Functions\r
306   * @{\r
307   */\r
308 \r
309 /**\r
310   * @}\r
311   */\r
312 \r
313 /**\r
314   * @}\r
315   */ \r
316 \r
317 /**\r
318   * @}\r
319   */\r
320 \r
321 #ifdef __cplusplus\r
322 }\r
323 #endif\r
324 \r
325 #endif /* __STM32F7xx_HAL_GPIO_H */\r
326 \r
327 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r