gr55xx_hal_gpio.h
Go to the documentation of this file.
1 
51 /* Define to prevent recursive inclusion -------------------------------------*/
52 #ifndef __GR55xx_HAL_GPIO_H__
53 #define __GR55xx_HAL_GPIO_H__
54 
55 #ifdef __cplusplus
56 extern "C" {
57 #endif
58 
59 /* Includes ------------------------------------------------------------------*/
60 #include "gr55xx_ll_gpio.h"
61 #include "gr55xx_hal_def.h"
62 
63 /* Exported types ------------------------------------------------------------*/
76 typedef struct _hal_gpio_callback
77 {
78  void (*gpio_callback)(gpio_regs_t *GPIOx, uint16_t gpio_pin);
80 
92 typedef enum
93 {
97 
108 typedef struct _gpio_init
109 {
110  uint32_t pin;
113  uint32_t mode;
116  uint32_t pull;
119  uint32_t mux;
122 
130 /* Exported constants --------------------------------------------------------*/
138 #define GPIO_PIN_0 ((uint16_t)0x0001U)
139 #define GPIO_PIN_1 ((uint16_t)0x0002U)
140 #define GPIO_PIN_2 ((uint16_t)0x0004U)
141 #define GPIO_PIN_3 ((uint16_t)0x0008U)
142 #define GPIO_PIN_4 ((uint16_t)0x0010U)
143 #define GPIO_PIN_5 ((uint16_t)0x0020U)
144 #define GPIO_PIN_6 ((uint16_t)0x0040U)
145 #define GPIO_PIN_7 ((uint16_t)0x0080U)
146 #define GPIO_PIN_8 ((uint16_t)0x0100U)
147 #define GPIO_PIN_9 ((uint16_t)0x0200U)
148 #define GPIO_PIN_10 ((uint16_t)0x0400U)
149 #define GPIO_PIN_11 ((uint16_t)0x0800U)
150 #define GPIO_PIN_12 ((uint16_t)0x1000U)
151 #define GPIO_PIN_13 ((uint16_t)0x2000U)
152 #define GPIO_PIN_14 ((uint16_t)0x4000U)
153 #define GPIO_PIN_15 ((uint16_t)0x8000U)
154 #define GPIO_PIN_ALL ((uint16_t)0xFFFFU)
156 #define GPIO_PIN_MASK (0x0000FFFFU)
166 #define GPIO_MODE_INPUT (LL_GPIO_MODE_INPUT << 0)
167 #define GPIO_MODE_OUTPUT (LL_GPIO_MODE_OUTPUT << 0)
168 #define GPIO_MODE_MUX (LL_GPIO_MODE_MUX << 0)
169 #define GPIO_MODE_IT_RISING (LL_GPIO_TRIGGER_RISING << 4)
170 #define GPIO_MODE_IT_FALLING (LL_GPIO_TRIGGER_FALLING << 4)
171 #define GPIO_MODE_IT_HIGH (LL_GPIO_TRIGGER_HIGH << 4)
172 #define GPIO_MODE_IT_LOW (LL_GPIO_TRIGGER_LOW << 4)
179 #define GPIO_NOPULL LL_GPIO_PULL_NO
180 #define GPIO_PULLUP LL_GPIO_PULL_UP
181 #define GPIO_PULLDOWN LL_GPIO_PULL_DOWN
187 #define GPIO_DEFAULT_CONFIG \
188 { \
189  .pin = GPIO_PIN_ALL, \
190  .mode = GPIO_MODE_INPUT, \
191  .pull = GPIO_PULLDOWN, \
192  .mux = GPIO_PIN_MUX_GPIO, \
193 }
194 
197 /* Exported macro ------------------------------------------------------------*/
209 #define __HAL_GPIO_IT_GET_IT(__GPIOX__, __GPIO_PIN__) ll_gpio_read_flag_it(__GPIOX__, __GPIO_PIN__)
210 
218 #define __HAL_GPIO_IT_CLEAR_IT(__GPIOX__, __GPIO_PIN__) ll_gpio_clear_flag_it(__GPIOX__, __GPIO_PIN__)
219 
222 /* Private macros ------------------------------------------------------------*/
232 #define IS_GPIO_PIN_ACTION(__ACTION__) (((__ACTION__) == GPIO_PIN_RESET) || ((__ACTION__) == GPIO_PIN_SET))
233 
239 #define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_PIN_MASK) != 0x00U) &&\
240  (((__PIN__) & ~GPIO_PIN_MASK) == 0x00U))
241 
247 #define IS_GPIO_MODE(__MODE__) (((__MODE__) == GPIO_MODE_INPUT) ||\
248  ((__MODE__) == GPIO_MODE_OUTPUT) ||\
249  ((__MODE__) == GPIO_MODE_MUX) ||\
250  ((__MODE__) == GPIO_MODE_IT_RISING) ||\
251  ((__MODE__) == GPIO_MODE_IT_FALLING) ||\
252  ((__MODE__) == GPIO_MODE_IT_HIGH) ||\
253  ((__MODE__) == GPIO_MODE_IT_LOW))
254 
260 #define IS_GPIO_PULL(__PULL__) (((__PULL__) == GPIO_NOPULL) ||\
261  ((__PULL__) == GPIO_PULLUP) || \
262  ((__PULL__) == GPIO_PULLDOWN))
263 
268 /* Include GPIO HAL Extended module */
269 #include "gr55xx_hal_gpio_ex.h"
270 
271 /* Exported functions --------------------------------------------------------*/
290 void hal_gpio_init(gpio_regs_t *GPIOx, gpio_init_t *p_gpio_init);
291 
318 void hal_gpio_deinit(gpio_regs_t *GPIOx, uint32_t gpio_pin);
319 
354 gpio_pin_state_t hal_gpio_read_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin);
355 
386 void hal_gpio_write_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin, gpio_pin_state_t pin_state);
387 
414 void hal_gpio_toggle_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin);
415 
430 void hal_gpio_exti_irq_handler(gpio_regs_t *GPIOx);
431 
461 void hal_gpio_exti_callback(gpio_regs_t *GPIOx, uint16_t gpio_pin);
462 
467 #ifdef __cplusplus
468 }
469 #endif
470 
471 #endif /* __GR55xx_HAL_GPIO_H__ */
472 
_gpio_init::pull
uint32_t pull
Definition: gr55xx_hal_gpio.h:116
gpio_pin_state_t
gpio_pin_state_t
GPIO Bit SET and Bit RESET Enumerations.
Definition: gr55xx_hal_gpio.h:93
hal_gpio_exti_callback
void hal_gpio_exti_callback(gpio_regs_t *GPIOx, uint16_t gpio_pin)
GPIO pin detection callback.
hal_gpio_callback_t
struct _hal_gpio_callback hal_gpio_callback_t
HAL_GPIO Callback function definition.
_gpio_init::mode
uint32_t mode
Definition: gr55xx_hal_gpio.h:113
hal_gpio_init
void hal_gpio_init(gpio_regs_t *GPIOx, gpio_init_t *p_gpio_init)
Initialize the GPIOx peripheral according to the specified parameters in the p_gpio_init.
GPIO_PIN_SET
@ GPIO_PIN_SET
Definition: gr55xx_hal_gpio.h:95
_hal_gpio_callback
HAL_GPIO Callback function definition.
Definition: gr55xx_hal_gpio.h:77
GPIO_PIN_RESET
@ GPIO_PIN_RESET
Definition: gr55xx_hal_gpio.h:94
gr55xx_ll_gpio.h
Header file containing functions prototypes of GPIO LL library.
_gpio_init::pin
uint32_t pin
Definition: gr55xx_hal_gpio.h:110
hal_gpio_read_pin
gpio_pin_state_t hal_gpio_read_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin)
Read the specified input port pin.
_gpio_init::mux
uint32_t mux
Definition: gr55xx_hal_gpio.h:119
hal_gpio_toggle_pin
void hal_gpio_toggle_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin)
Toggle the specified GPIO pin.
hal_gpio_exti_irq_handler
void hal_gpio_exti_irq_handler(gpio_regs_t *GPIOx)
Handle GPIO interrupt request.
_gpio_init
GPIO init structure definition.
Definition: gr55xx_hal_gpio.h:109
gr55xx_hal_gpio_ex.h
Header file containing extended macro of GPIO HAL library.
_hal_gpio_callback::gpio_callback
void(* gpio_callback)(gpio_regs_t *GPIOx, uint16_t gpio_pin)
Definition: gr55xx_hal_gpio.h:78
hal_gpio_deinit
void hal_gpio_deinit(gpio_regs_t *GPIOx, uint32_t gpio_pin)
De-initialize the GPIOx peripheral registers to their default reset values.
hal_gpio_write_pin
void hal_gpio_write_pin(gpio_regs_t *GPIOx, uint16_t gpio_pin, gpio_pin_state_t pin_state)
Set or clear the selected data port bit.
gpio_init_t
struct _gpio_init gpio_init_t
GPIO init structure definition.
gr55xx_hal_def.h
This file contains HAL common definitions, enumeration, macros and structures definitions.