STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
stm32h7xx_hal_gpio.h
Go to the documentation of this file.
1/**
2 ******************************************************************************
3 * @file stm32h7xx_hal_gpio.h
4 * @author MCD Application Team
5 * @brief Header file of GPIO HAL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2017 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 STM32H7xx_HAL_GPIO_H
21#define STM32H7xx_HAL_GPIO_H
22
23#ifdef __cplusplus
24extern "C" {
25#endif
26
27/* Includes ------------------------------------------------------------------*/
28#include "stm32h7xx_hal_def.h"
29
30/** @addtogroup STM32H7xx_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 */
46typedef struct
47{
48 uint32_t Pin; /*!< Specifies the GPIO pins to be configured.
49 This parameter can be any value of @ref GPIO_pins_define */
50
51 uint32_t Mode; /*!< Specifies the operating mode for the selected pins.
52 This parameter can be a value of @ref GPIO_mode_define */
53
54 uint32_t Pull; /*!< Specifies the Pull-up or Pull-Down activation for the selected pins.
55 This parameter can be a value of @ref GPIO_pull_define */
56
57 uint32_t Speed; /*!< Specifies the speed for the selected pins.
58 This parameter can be a value of @ref GPIO_speed_define */
59
60 uint32_t Alternate; /*!< Peripheral to be connected to the selected pins.
61 This parameter can be a value of @ref GPIO_Alternate_function_selection */
63
64/**
65 * @brief GPIO Bit SET and Bit RESET enumeration
66 */
72/**
73 * @}
74 */
75
76/* Exported constants --------------------------------------------------------*/
77
78/** @defgroup GPIO_Exported_Constants GPIO Exported Constants
79 * @{
80 */
81
82/** @defgroup GPIO_pins_define GPIO pins define
83 * @{
84 */
85#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */
86#define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */
87#define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */
88#define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */
89#define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */
90#define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */
91#define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */
92#define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */
93#define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */
94#define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */
95#define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */
96#define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */
97#define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */
98#define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */
99#define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */
100#define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */
101#define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */
102
103#define GPIO_PIN_MASK (0x0000FFFFU) /* PIN mask for assert test */
104/**
105 * @}
106 */
107
108/** @defgroup GPIO_mode_define GPIO mode define
109 * @brief GPIO Configuration Mode
110 * Elements values convention: 0x00WX00YZ
111 * - W : EXTI trigger detection on 3 bits
112 * - X : EXTI mode (IT or Event) on 2 bits
113 * - Y : Output type (Push Pull or Open Drain) on 1 bit
114 * - Z : GPIO mode (Input, Output, Alternate or Analog) on 2 bits
115 * @{
116 */
117#define GPIO_MODE_INPUT MODE_INPUT /*!< Input Floating Mode */
118#define GPIO_MODE_OUTPUT_PP (MODE_OUTPUT | OUTPUT_PP) /*!< Output Push Pull Mode */
119#define GPIO_MODE_OUTPUT_OD (MODE_OUTPUT | OUTPUT_OD) /*!< Output Open Drain Mode */
120#define GPIO_MODE_AF_PP (MODE_AF | OUTPUT_PP) /*!< Alternate Function Push Pull Mode */
121#define GPIO_MODE_AF_OD (MODE_AF | OUTPUT_OD) /*!< Alternate Function Open Drain Mode */
122#define GPIO_MODE_ANALOG MODE_ANALOG /*!< Analog Mode */
123#define GPIO_MODE_IT_RISING (MODE_INPUT | EXTI_IT | TRIGGER_RISING) /*!< External Interrupt Mode with Rising edge trigger detection */
124#define GPIO_MODE_IT_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_FALLING) /*!< External Interrupt Mode with Falling edge trigger detection */
125#define GPIO_MODE_IT_RISING_FALLING (MODE_INPUT | EXTI_IT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Interrupt Mode with Rising/Falling edge trigger detection */
126
127#define GPIO_MODE_EVT_RISING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING) /*!< External Event Mode with Rising edge trigger detection */
128#define GPIO_MODE_EVT_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_FALLING) /*!< External Event Mode with Falling edge trigger detection */
129#define GPIO_MODE_EVT_RISING_FALLING (MODE_INPUT | EXTI_EVT | TRIGGER_RISING | TRIGGER_FALLING) /*!< External Event Mode with Rising/Falling edge trigger detection */
130/**
131 * @}
132 */
133
134/** @defgroup GPIO_speed_define GPIO speed define
135 * @brief GPIO Output Maximum frequency
136 * @{
137 */
138#define GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Low speed */
139#define GPIO_SPEED_FREQ_MEDIUM (0x00000001U) /*!< Medium speed */
140#define GPIO_SPEED_FREQ_HIGH (0x00000002U) /*!< Fast speed */
141#define GPIO_SPEED_FREQ_VERY_HIGH (0x00000003U) /*!< High speed */
142/**
143 * @}
144 */
145
146/** @defgroup GPIO_pull_define GPIO pull define
147 * @brief GPIO Pull-Up or Pull-Down Activation
148 * @{
149 */
150#define GPIO_NOPULL (0x00000000U) /*!< No Pull-up or Pull-down activation */
151#define GPIO_PULLUP (0x00000001U) /*!< Pull-up activation */
152#define GPIO_PULLDOWN (0x00000002U) /*!< Pull-down activation */
153/**
154 * @}
155 */
156
157/**
158 * @}
159 */
160
161/* Exported macro ------------------------------------------------------------*/
162/** @defgroup GPIO_Exported_Macros GPIO Exported Macros
163 * @{
164 */
165
166/**
167 * @brief Checks whether the specified EXTI line flag is set or not.
168 * @param __EXTI_LINE__: specifies the EXTI line flag to check.
169 * This parameter can be GPIO_PIN_x where x can be(0..15)
170 * @retval The new state of __EXTI_LINE__ (SET or RESET).
171 */
172#define __HAL_GPIO_EXTI_GET_FLAG(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__))
173
174/**
175 * @brief Clears the EXTI's line pending flags.
176 * @param __EXTI_LINE__: specifies the EXTI lines flags to clear.
177 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
178 * @retval None
179 */
180#define __HAL_GPIO_EXTI_CLEAR_FLAG(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__))
181
182/**
183 * @brief Checks whether the specified EXTI line is asserted or not.
184 * @param __EXTI_LINE__: specifies the EXTI line to check.
185 * This parameter can be GPIO_PIN_x where x can be(0..15)
186 * @retval The new state of __EXTI_LINE__ (SET or RESET).
187 */
188#define __HAL_GPIO_EXTI_GET_IT(__EXTI_LINE__) (EXTI->PR1 & (__EXTI_LINE__))
189
190/**
191 * @brief Clears the EXTI's line pending bits.
192 * @param __EXTI_LINE__: specifies the EXTI lines to clear.
193 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
194 * @retval None
195 */
196#define __HAL_GPIO_EXTI_CLEAR_IT(__EXTI_LINE__) (EXTI->PR1 = (__EXTI_LINE__))
197
198#if defined(DUAL_CORE)
199/**
200 * @brief Checks whether the specified EXTI line flag is set or not.
201 * @param __EXTI_LINE__: specifies the EXTI line flag to check.
202 * This parameter can be GPIO_PIN_x where x can be(0..15)
203 * @retval The new state of __EXTI_LINE__ (SET or RESET).
204 */
205#define __HAL_GPIO_EXTID2_GET_FLAG(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__))
206
207/**
208 * @brief Clears the EXTI's line pending flags.
209 * @param __EXTI_LINE__: specifies the EXTI lines flags to clear.
210 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
211 * @retval None
212 */
213#define __HAL_GPIO_EXTID2_CLEAR_FLAG(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__))
214
215/**
216 * @brief Checks whether the specified EXTI line is asserted or not.
217 * @param __EXTI_LINE__: specifies the EXTI line to check.
218 * This parameter can be GPIO_PIN_x where x can be(0..15)
219 * @retval The new state of __EXTI_LINE__ (SET or RESET).
220 */
221#define __HAL_GPIO_EXTID2_GET_IT(__EXTI_LINE__) (EXTI->C2PR1 & (__EXTI_LINE__))
222
223/**
224 * @brief Clears the EXTI's line pending bits.
225 * @param __EXTI_LINE__: specifies the EXTI lines to clear.
226 * This parameter can be any combination of GPIO_PIN_x where x can be (0..15)
227 * @retval None
228 */
229#define __HAL_GPIO_EXTID2_CLEAR_IT(__EXTI_LINE__) (EXTI->C2PR1 = (__EXTI_LINE__))
230#endif
231
232/**
233 * @brief Generates a Software interrupt on selected EXTI line.
234 * @param __EXTI_LINE__: specifies the EXTI line to check.
235 * This parameter can be GPIO_PIN_x where x can be(0..15)
236 * @retval None
237 */
238#define __HAL_GPIO_EXTI_GENERATE_SWIT(__EXTI_LINE__) (EXTI->SWIER1 |= (__EXTI_LINE__))
239/**
240 * @}
241 */
242
243/* Include GPIO HAL Extension module */
245
246/* Exported functions --------------------------------------------------------*/
247/** @addtogroup GPIO_Exported_Functions
248 * @{
249 */
250
251/** @addtogroup GPIO_Exported_Functions_Group1
252 * @{
253 */
254/* Initialization and de-initialization functions *****************************/
255void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, const GPIO_InitTypeDef *GPIO_Init);
256void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin);
257/**
258 * @}
259 */
260
261/** @addtogroup GPIO_Exported_Functions_Group2
262 * @{
263 */
264/* IO operation functions *****************************************************/
265GPIO_PinState HAL_GPIO_ReadPin(const GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
266void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
267void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
269void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin);
270void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
271
272/**
273 * @}
274 */
275
276/**
277 * @}
278 */
279/* Private types -------------------------------------------------------------*/
280/* Private variables ---------------------------------------------------------*/
281/* Private constants ---------------------------------------------------------*/
282/** @defgroup GPIO_Private_Constants GPIO Private Constants
283 * @{
284 */
285#define GPIO_MODE_Pos 0u
286#define GPIO_MODE (0x3uL << GPIO_MODE_Pos)
287#define MODE_INPUT (0x0uL << GPIO_MODE_Pos)
288#define MODE_OUTPUT (0x1uL << GPIO_MODE_Pos)
289#define MODE_AF (0x2uL << GPIO_MODE_Pos)
290#define MODE_ANALOG (0x3uL << GPIO_MODE_Pos)
291#define OUTPUT_TYPE_Pos 4u
292#define OUTPUT_TYPE (0x1uL << OUTPUT_TYPE_Pos)
293#define OUTPUT_PP (0x0uL << OUTPUT_TYPE_Pos)
294#define OUTPUT_OD (0x1uL << OUTPUT_TYPE_Pos)
295#define EXTI_MODE_Pos 16u
296#define EXTI_MODE (0x3uL << EXTI_MODE_Pos)
297#define EXTI_IT (0x1uL << EXTI_MODE_Pos)
298#define EXTI_EVT (0x2uL << EXTI_MODE_Pos)
299#define TRIGGER_MODE_Pos 20u
300#define TRIGGER_MODE (0x7uL << TRIGGER_MODE_Pos)
301#define TRIGGER_RISING (0x1uL << TRIGGER_MODE_Pos)
302#define TRIGGER_FALLING (0x2uL << TRIGGER_MODE_Pos)
303#define TRIGGER_LEVEL (0x4uL << TRIGGER_MODE_Pos)
304/**
305 * @}
306 */
307
308/* Private macros ------------------------------------------------------------*/
309/** @defgroup GPIO_Private_Macros GPIO Private Macros
310 * @{
311 */
312#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
313#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\
314 (((uint32_t)(__PIN__) & ~GPIO_PIN_MASK) == 0x00U))
315#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
316 ((MODE) == GPIO_MODE_OUTPUT_PP) ||\
317 ((MODE) == GPIO_MODE_OUTPUT_OD) ||\
318 ((MODE) == GPIO_MODE_AF_PP) ||\
319 ((MODE) == GPIO_MODE_AF_OD) ||\
320 ((MODE) == GPIO_MODE_IT_RISING) ||\
321 ((MODE) == GPIO_MODE_IT_FALLING) ||\
322 ((MODE) == GPIO_MODE_IT_RISING_FALLING) ||\
323 ((MODE) == GPIO_MODE_EVT_RISING) ||\
324 ((MODE) == GPIO_MODE_EVT_FALLING) ||\
325 ((MODE) == GPIO_MODE_EVT_RISING_FALLING) ||\
326 ((MODE) == GPIO_MODE_ANALOG))
327#define IS_GPIO_SPEED(SPEED) (((SPEED) == GPIO_SPEED_FREQ_LOW) || ((SPEED) == GPIO_SPEED_FREQ_MEDIUM) || \
328 ((SPEED) == GPIO_SPEED_FREQ_HIGH) || ((SPEED) == GPIO_SPEED_FREQ_VERY_HIGH))
329
330#define IS_GPIO_PULL(PULL) (((PULL) == GPIO_NOPULL) || ((PULL) == GPIO_PULLUP) || \
331 ((PULL) == GPIO_PULLDOWN))
332
333/**
334 * @}
335 */
336
337/* Private functions ---------------------------------------------------------*/
338/** @defgroup GPIO_Private_Functions GPIO Private Functions
339 * @{
340 */
341
342/**
343 * @}
344 */
345
346/**
347 * @}
348 */
349
350/**
351 * @}
352 */
353
354#ifdef __cplusplus
355}
356#endif
357
358#endif /* STM32H7xx_HAL_GPIO_H */
359
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, const GPIO_InitTypeDef *GPIO_Init)
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
Definition board_exti.c:45
void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
GPIO_PinState HAL_GPIO_ReadPin(const GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)
GPIO_PinState
GPIO Bit SET and Bit RESET enumeration.
@ GPIO_PIN_SET
@ GPIO_PIN_RESET
This file contains HAL common defines, enumeration, macros and structures definitions.
HAL_StatusTypeDef
HAL Status structures definition.
Header file of GPIO HAL Extension module.
GPIO Init structure definition.
uint32_t Mode
Specifies the operating mode for the selected pins.
uint32_t Alternate
Peripheral to be connected to the selected pins.
uint32_t Pull
Specifies the Pull-up or Pull-Down activation for the selected pins.
uint32_t Pin
Specifies the GPIO pins to be configured.
uint32_t Speed
Specifies the speed for the selected pins.
General Purpose I/O.