source: trunk/firmware/Drivers/STM32G0xx_HAL_Driver/Inc/stm32g0xx_hal_gpio.h

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