quasar_gpio.h
This module controls GPIO related features.
- Copyright
Copyright (C) 2026 SPARK Microsystems International Inc. All rights reserved.
- License
This source code is proprietary and subject to the SPARK Microsystems Software EULA found in this package in file EULA.txt.
- Author
SPARK FW Team.
Defines
-
QUASAR_GPIO_GET_SELECTED_IRQ(gpio_pin) ((IRQn_Type)(EXTI0_IRQn + (gpio_pin)))
Typedefs
-
typedef enum quasar_gpio_pin quasar_gpio_pin_t
Quasar BSP GPIO pin selection.
-
typedef enum quasar_gpio_mode quasar_gpio_mode_t
Quasar BSP GPIO mode configuration selection.
-
typedef enum quasar_gpio_type quasar_gpio_type_t
Quasar BSP GPIO type configuration selection.
-
typedef enum quasar_gpio_speed quasar_gpio_speed_t
Quasar BSP GPIO speed configuration selection.
-
typedef enum quasar_gpio_pull quasar_gpio_pull_t
Quasar BSP GPIO pull up/down configuration selection.
-
typedef enum quasar_gpio_alternate_function quasar_gpio_alternate_t
Quasar BSP GPIO alternate function configuration selection.
-
typedef struct quasar_gpio_config quasar_gpio_config_t
Quasar BSP GPIO configuration.
Enums
-
enum quasar_gpio_pin
Quasar BSP GPIO pin selection.
Values:
-
enumerator QUASAR_GPIO_PIN_0 = 0
GPIO pin 0.
-
enumerator QUASAR_GPIO_PIN_1 = 1
GPIO pin 1.
-
enumerator QUASAR_GPIO_PIN_2 = 2
GPIO pin 2.
-
enumerator QUASAR_GPIO_PIN_3 = 3
GPIO pin 3.
-
enumerator QUASAR_GPIO_PIN_4 = 4
GPIO pin 4.
-
enumerator QUASAR_GPIO_PIN_5 = 5
GPIO pin 5.
-
enumerator QUASAR_GPIO_PIN_6 = 6
GPIO pin 6.
-
enumerator QUASAR_GPIO_PIN_7 = 7
GPIO pin 7.
-
enumerator QUASAR_GPIO_PIN_8 = 8
GPIO pin 8.
-
enumerator QUASAR_GPIO_PIN_9 = 9
GPIO pin 9.
-
enumerator QUASAR_GPIO_PIN_10 = 10
GPIO pin 10.
-
enumerator QUASAR_GPIO_PIN_11 = 11
GPIO pin 11.
-
enumerator QUASAR_GPIO_PIN_12 = 12
GPIO pin 12.
-
enumerator QUASAR_GPIO_PIN_13 = 13
GPIO pin 13.
-
enumerator QUASAR_GPIO_PIN_14 = 14
GPIO pin 14.
-
enumerator QUASAR_GPIO_PIN_15 = 15
GPIO pin 15.
-
enumerator QUASAR_GPIO_PIN_0 = 0
-
enum quasar_gpio_mode
Quasar BSP GPIO mode configuration selection.
Values:
-
enumerator QUASAR_GPIO_MODE_INPUT = 0
GPIO mode configured as digital input.
-
enumerator QUASAR_GPIO_MODE_OUTPUT = 1
GPIO mode configured as digital output.
-
enumerator QUASAR_GPIO_MODE_ALTERNATE = 2
GPIO mode configured for alternate functions.
-
enumerator QUASAR_GPIO_MODE_ANALOG = 3
GPIO mode configured for analog operations.
-
enumerator QUASAR_GPIO_MODE_INPUT = 0
-
enum quasar_gpio_type
Quasar BSP GPIO type configuration selection.
Values:
-
enumerator QUASAR_GPIO_TYPE_NONE = 0
No GPIO type selected.
-
enumerator QUASAR_GPIO_TYPE_PP = 0
GPIO configured as push-pull type.
-
enumerator QUASAR_GPIO_TYPE_OD = 1
GPIO configured as open-drain type.
-
enumerator QUASAR_GPIO_TYPE_NONE = 0
-
enum quasar_gpio_speed
Quasar BSP GPIO speed configuration selection.
Values:
-
enumerator QUASAR_GPIO_SPEED_NONE = 0
No GPIO speed configuration selected.
-
enumerator QUASAR_GPIO_SPEED_LOW = 0
GPIO configured for low speed operation.
-
enumerator QUASAR_GPIO_SPEED_MEDIUM = 1
GPIO configured for medium speed operation.
-
enumerator QUASAR_GPIO_SPEED_HIGH = 2
GPIO configured for high speed operation.
-
enumerator QUASAR_GPIO_SPEED_VERY_HIGH = 3
GPIO configured for very high speed operation.
-
enumerator QUASAR_GPIO_SPEED_NONE = 0
-
enum quasar_gpio_pull
Quasar BSP GPIO pull up/down configuration selection.
Values:
-
enumerator QUASAR_GPIO_PULL_NONE = 0
No pull-up or pull down resistor configuration selected.
-
enumerator QUASAR_GPIO_PULL_UP = 1
GPIO configured with pull-up resistor.
-
enumerator QUASAR_GPIO_PULL_DOWN = 2
GPIO configured with pull-down resistor.
-
enumerator QUASAR_GPIO_PULL_NONE = 0
-
enum quasar_gpio_alternate_function
Quasar BSP GPIO alternate function configuration selection.
Values:
-
enumerator QUASAR_GPIO_ALTERNATE_NONE = 0
No alternate function selected.
-
enumerator QUASAR_GPIO_ALTERNATE_AF0 = 0
GPIO alternate function 0.
-
enumerator QUASAR_GPIO_ALTERNATE_AF1 = 1
GPIO alternate function 1.
-
enumerator QUASAR_GPIO_ALTERNATE_AF2 = 2
GPIO alternate function 2.
-
enumerator QUASAR_GPIO_ALTERNATE_AF3 = 3
GPIO alternate function 3.
-
enumerator QUASAR_GPIO_ALTERNATE_AF4 = 4
GPIO alternate function 4.
-
enumerator QUASAR_GPIO_ALTERNATE_AF5 = 5
GPIO alternate function 5.
-
enumerator QUASAR_GPIO_ALTERNATE_AF6 = 6
GPIO alternate function 6.
-
enumerator QUASAR_GPIO_ALTERNATE_AF7 = 7
GPIO alternate function 7.
-
enumerator QUASAR_GPIO_ALTERNATE_AF8 = 8
GPIO alternate function 8.
-
enumerator QUASAR_GPIO_ALTERNATE_AF9 = 9
GPIO alternate function 9.
-
enumerator QUASAR_GPIO_ALTERNATE_AF10 = 10
GPIO alternate function 10.
-
enumerator QUASAR_GPIO_ALTERNATE_AF11 = 11
GPIO alternate function 11.
-
enumerator QUASAR_GPIO_ALTERNATE_AF12 = 12
GPIO alternate function 12.
-
enumerator QUASAR_GPIO_ALTERNATE_AF13 = 13
GPIO alternate function 13.
-
enumerator QUASAR_GPIO_ALTERNATE_AF14 = 14
GPIO alternate function 14.
-
enumerator QUASAR_GPIO_ALTERNATE_AF15 = 15
GPIO alternate function 15.
-
enumerator QUASAR_GPIO_ALTERNATE_NONE = 0
Functions
-
void quasar_gpio_init(quasar_gpio_config_t gpio_config)
Initialize GPIO peripheral.
- Parameters:
gpio_config – [in] Selected GPIO configuration.
-
void quasar_gpio_deinit(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin)
Deinitialize GPIO peripheral.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be deinitialized.
gpio_pin – [in] Selected GPIO pin.
-
void quasar_gpio_configure_irq(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin, quasar_irq_priority_t irq_priority)
Configure the GPIO’s global interrupt on rising edge.
Note
This function should not be used with a QUASAR_IRQ_PRIORITY_NONE.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be configured.
gpio_pin – [in] Selected GPIO pin.
irq_priority – [in] IRQ priority.
-
void quasar_gpio_configure_rising_and_falling_edges_irq(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin, quasar_irq_priority_t irq_priority)
Configure the GPIO’s global interrupt on both edges.
Note
This function should not be used with a QUASAR_IRQ_PRIORITY_NONE.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be configured.
gpio_pin – [in] Selected GPIO pin.
irq_priority – [in] IRQ priority.
-
void quasar_gpio_enable_irq(quasar_gpio_pin_t gpio_pin)
Enable the GPIO’s global interrupt.
Note
This function should only be use if the GPIO has a interrupt configured.
- Parameters:
gpio_pin – [in] Selected GPIO pin.
-
void quasar_gpio_disable_irq(quasar_gpio_pin_t gpio_pin)
Disable the GPIO’s global interrupt.
Note
This function should only be use if the GPIO has a interrupt configured.
- Parameters:
gpio_pin – [in] Selected GPIO pin.
-
void quasar_gpio_clear_exti_port_selection(quasar_gpio_pin_t gpio_pin)
Clear the EXTI port selection for a given pin.
Note
Use this before configuring a new EXTI port mapping when the EXTI line was previously assigned to a different port.
- Parameters:
gpio_pin – [in] Selected GPIO pin.
-
void quasar_gpio_set_pending(quasar_gpio_pin_t gpio_pin)
Set the specified GPIO pin’s interrupt as pending.
Note
This function manually forces an interrupt to enter the pending state for a specified GPIO pin.
Note
This function doesn’t configure the interrupt itself; the interrupt for the specified GPIO pin should be already configured properly before calling this function.
- Parameters:
gpio_pin – [in] Selected GPIO pin.
-
void quasar_gpio_clock_enable(void)
Enable all GPIO’s peripheral clock.
-
void quasar_gpio_set(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin)
Set GPIO output.
Note
The GPIO must have been initialized in output mode.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be set.
gpio_pin – [in] The GPIO pin to set.
-
void quasar_gpio_clear(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin)
Clear GPIO output.
Note
The GPIO must have been initialized in output mode.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be clear.
gpio_pin – [in] The GPIO pin to clear.
-
void quasar_gpio_toggle(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin)
Toggle GPIO output.
Note
The GPIO must have been initialized in output mode.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be toggled.
gpio_pin – [in] The GPIO pin to toggle.
-
bool quasar_gpio_read_state(GPIO_TypeDef *gpio_port, quasar_gpio_pin_t gpio_pin)
Read GPIO state.
Note
The GPIO must have been initialized in input mode.
- Parameters:
gpio_port – [in] The reference GPIO port of the HAL to be read.
gpio_pin – [in] The output GPIO pin to read.
- Returns:
Return true if the input value is high, false otherwise.
-
struct quasar_gpio_config
- #include <quasar_gpio.h>
Quasar BSP GPIO configuration.
Public Members
-
GPIO_TypeDef *port
The reference HAL’s GPIO port selection.
-
quasar_gpio_pin_t pin
GPIO pin selection.
-
quasar_gpio_mode_t mode
GPIO mode selection.
-
quasar_gpio_type_t type
GPIO type selection.
-
quasar_gpio_speed_t speed
GPIO speed selection.
-
quasar_gpio_pull_t pull
GPIO pull-up/down configuration.
-
quasar_gpio_alternate_t alternate
GPIO alternate function selection.
-
GPIO_TypeDef *port