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