Data Structures | |
struct | gpio_map_t |
A type definition of pins and modules connectivity. More... | |
Macros | |
Return Values of the GPIO API | |
#define | GPIO_SUCCESS 0 |
Function successfully completed. More... | |
#define | GPIO_INVALID_ARGUMENT 1 |
Input parameters are out of range. More... | |
Interrupt Trigger Modes | |
#define | GPIO_PIN_CHANGE 0 |
Interrupt triggered upon pin change. More... | |
#define | GPIO_RISING_EDGE 1 |
Interrupt triggered upon rising edge. More... | |
#define | GPIO_FALLING_EDGE 2 |
Interrupt triggered upon falling edge. More... | |
Common defines for GPIO_FLAGS parameter | |
#define | GPIO_DIR_INPUT (0 << 0) |
Pin is Input. More... | |
#define | GPIO_DIR_OUTPUT (1 << 0) |
Pin is Output. More... | |
#define | GPIO_INIT_LOW (0 << 1) |
Initial Output State is Low. More... | |
#define | GPIO_INIT_HIGH (1 << 1) |
Initial Output State is High. More... | |
#define | GPIO_PULL_UP (1 << 2) |
Pull-Up (when input) More... | |
#define | GPIO_PULL_DOWN (2 << 2) |
Pull-Down (when input) More... | |
#define | GPIO_BUSKEEPER (3 << 2) |
Bus Keeper. More... | |
#define | GPIO_DRIVE_MIN (0 << 4) |
Drive Min Configuration. More... | |
#define | GPIO_DRIVE_LOW (1 << 4) |
Drive Low Configuration. More... | |
#define | GPIO_DRIVE_HIGH (2 << 4) |
Drive High Configuration. More... | |
#define | GPIO_DRIVE_MAX (3 << 4) |
Drive Max Configuration. More... | |
#define | GPIO_OPEN_DRAIN (1 << 6) |
Open-Drain (when output) More... | |
#define | GPIO_INTERRUPT (1 << 7) |
Enable Pin/Group Interrupt. More... | |
#define | GPIO_BOTHEDGES (3 << 7) |
Sense Both Edges. More... | |
#define | GPIO_RISING (5 << 7) |
Sense Rising Edge. More... | |
#define | GPIO_FALLING (7 << 7) |
Sense Falling Edge. More... | |
Functions | |
Peripheral Bus Interface | |
Low-speed interface with a non-deterministic number of clock cycles per access. This interface operates with lower clock frequencies (fPB <= fCPU), and its timing is not deterministic since it needs to access a shared bus which may be heavily loaded.
| |
uint32_t | gpio_enable_module (const gpio_map_t gpiomap, uint32_t size) |
Enables specific module modes for a set of pins. More... | |
uint32_t | gpio_enable_module_pin (uint32_t pin, uint32_t function) |
Enables a specific module mode for a pin. More... | |
void | gpio_enable_gpio (const gpio_map_t gpiomap, uint32_t size) |
Enables the GPIO mode of a set of pins. More... | |
void | gpio_enable_gpio_pin (uint32_t pin) |
Enables the GPIO mode of a pin. More... | |
void | gpio_enable_pin_pull_up (uint32_t pin) |
Enables the pull-up resistor of a pin. More... | |
void | gpio_disable_pin_pull_up (uint32_t pin) |
Disables the pull-up resistor of a pin. More... | |
void | gpio_configure_pin (uint32_t pin, uint32_t flags) |
Configuration functionality on a pin. More... | |
void | gpio_configure_group (uint32_t port, uint32_t mask, uint32_t flags) |
Configuration functionality on a port. More... | |
bool | gpio_get_pin_value (uint32_t pin) |
Returns the value of a pin. More... | |
static __always_inline bool | gpio_pin_is_low (uint32_t pin) |
Check if the pin is in low logical level. More... | |
static __always_inline bool | gpio_pin_is_high (uint32_t pin) |
Check if the pin is in high logical level. More... | |
bool | gpio_get_gpio_pin_output_value (uint32_t pin) |
Returns the output value set for a GPIO pin. More... | |
bool | gpio_get_gpio_open_drain_pin_output_value (uint32_t pin) |
Returns the output value set for a GPIO pin using open drain. More... | |
void | gpio_set_gpio_pin (uint32_t pin) |
Drives a GPIO pin to 1. More... | |
void | gpio_set_pin_high (uint32_t pin) |
Drives a GPIO pin to 1. More... | |
void | gpio_set_group_high (uint32_t port, uint32_t mask) |
Drives a GPIO port to 1. More... | |
void | gpio_clr_gpio_pin (uint32_t pin) |
Drives a GPIO pin to 0. More... | |
void | gpio_set_pin_low (uint32_t pin) |
Drives a GPIO pin to 0. More... | |
void | gpio_set_group_low (uint32_t port, uint32_t mask) |
Drives a GPIO port to 0. More... | |
void | gpio_tgl_gpio_pin (uint32_t pin) |
Toggles a GPIO pin. More... | |
void | gpio_toggle_pin (uint32_t pin) |
Toggles a GPIO pin. More... | |
void | gpio_toggle_group (uint32_t port, uint32_t mask) |
Toggles a GPIO group. More... | |
void | gpio_set_gpio_open_drain_pin (uint32_t pin) |
Drives a GPIO pin to 1 using open drain. More... | |
void | gpio_clr_gpio_open_drain_pin (uint32_t pin) |
Drives a GPIO pin to 0 using open drain. More... | |
void | gpio_tgl_gpio_open_drain_pin (uint32_t pin) |
Toggles a GPIO pin using open drain. More... | |
void | gpio_enable_pin_glitch_filter (uint32_t pin) |
Enables the glitch filter of a pin. More... | |
void | gpio_disable_pin_glitch_filter (uint32_t pin) |
Disables the glitch filter of a pin. More... | |
uint32_t | gpio_enable_pin_interrupt (uint32_t pin, uint32_t mode) |
Enables the interrupt of a pin with the specified settings. More... | |
void | gpio_disable_pin_interrupt (uint32_t pin) |
Disables the interrupt of a pin. More... | |
bool | gpio_get_pin_interrupt_flag (uint32_t pin) |
Gets the interrupt flag of a pin. More... | |
void | gpio_clear_pin_interrupt_flag (uint32_t pin) |
Clears the interrupt flag of a pin. More... | |
Local Bus Interface | |
High-speed interface with only one clock cycle per access. This interface operates with high clock frequency (fCPU), and its timing is deterministic since it does not need to access a shared bus which may be heavily loaded.
| |
static __always_inline void | gpio_local_init (void) |
Enables the local bus interface for GPIO. More... | |
static __always_inline void | gpio_local_enable_pin_output_driver (uint32_t pin) |
Enables the output driver of a pin. More... | |
static __always_inline void | gpio_local_disable_pin_output_driver (uint32_t pin) |
Disables the output driver of a pin. More... | |
static __always_inline bool | gpio_local_get_pin_value (uint32_t pin) |
Returns the value of a pin. More... | |
static __always_inline void | gpio_local_set_gpio_pin (uint32_t pin) |
Drives a GPIO pin to 1. More... | |
static __always_inline void | gpio_local_clr_gpio_pin (uint32_t pin) |
Drives a GPIO pin to 0. More... | |
static __always_inline void | gpio_local_tgl_gpio_pin (uint32_t pin) |
Toggles a GPIO pin. More... | |
static __always_inline void | gpio_local_init_gpio_open_drain_pin (uint32_t pin) |
Initializes the configuration of a GPIO pin so that it can be used with GPIO open-drain functions. More... | |
static __always_inline void | gpio_local_set_gpio_open_drain_pin (uint32_t pin) |
Drives a GPIO pin to 1 using open drain. More... | |
static __always_inline void | gpio_local_clr_gpio_open_drain_pin (uint32_t pin) |
Drives a GPIO pin to 0 using open drain. More... | |
static __always_inline void | gpio_local_tgl_gpio_open_drain_pin (uint32_t pin) |
Toggles a GPIO pin using open drain. More... | |
Peripheral Event System support | |
The GPIO can be programmed to output peripheral events whenever an interrupt condition is detected, such as pin value change, or only when a rising or falling edge is detected. | |
static __always_inline void | gpio_enable_pin_periph_event (uint32_t pin) |
Enables the peripheral event generation of a pin. More... | |
static __always_inline void | gpio_disable_pin_periph_event (uint32_t pin) |
Disables the peripheral event generation of a pin. More... | |
uint32_t | gpio_configure_pin_periph_event_mode (uint32_t pin, uint32_t mode, uint32_t use_igf) |