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.

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.

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.

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.

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.

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.

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.