quasar_gpio.h

This module controls GPIO related features.

Copyright

Copyright (C) 2023 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.

Typedefs

typedef enum quasar_gpio_port quasar_gpio_port_t

Quasar BSP GPIO port selection.

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_port

Quasar BSP GPIO port selection.

Values:

enumerator QUASAR_GPIO_PORT_A

GPIO port A

enumerator QUASAR_GPIO_PORT_B

GPIO port B

enumerator QUASAR_GPIO_PORT_C

GPIO port C

enumerator QUASAR_GPIO_PORT_D

GPIO port D

enumerator QUASAR_GPIO_PORT_E

GPIO port E

enumerator QUASAR_GPIO_PORT_F

GPIO port F

enumerator QUASAR_GPIO_PORT_G

GPIO port G

enumerator QUASAR_GPIO_PORT_H

GPIO port H

enumerator QUASAR_GPIO_PORT_I

GPIO port I

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(quasar_gpio_port_t gpio_port, quasar_gpio_pin_t gpio_pin)

Deinitialize GPIO peripheral.

Parameters:
  • gpio_port – [in] The GPIO port to set.

  • gpio_pin – [in] Selected GPIO pin.

void quasar_gpio_configure_irq(quasar_gpio_port_t 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:
  • port – [in] The GPIO port to set.

  • gpio_pin – [in] Selected GPIO pin.

  • irq_priority – [in] IRQ priority.

void quasar_gpio_configure_rising_and_falling_edges_irq(quasar_gpio_port_t 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:
  • port – [in] The GPIO port to set.

  • 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_set_pending(quasar_gpio_pin_t gpio_pin)

Set the specified GPIO pin’s interrupt as pending.

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(quasar_gpio_port_t port, quasar_gpio_pin_t pin)

Set GPIO output.

Note

The GPIO must have been initialized in output mode.

Parameters:
  • port – [in] The GPIO port to set.

  • pin – [in] The GPIO pin to set.

void quasar_gpio_clear(quasar_gpio_port_t port, quasar_gpio_pin_t pin)

Clear GPIO output.

Note

The GPIO must have been initialized in output mode.

Parameters:
  • port – [in] The GPIO port to clear.

  • pin – [in] The GPIO pin to clear.

void quasar_gpio_toggle(quasar_gpio_port_t port, quasar_gpio_pin_t pin)

Toggle GPIO output.

Note

The GPIO must have been initialized in output mode.

Parameters:
  • port – [in] The GPIO port to toggle.

  • pin – [in] The GPIO pin to toggle.

bool quasar_gpio_read_state(quasar_gpio_port_t port, quasar_gpio_pin_t pin)

Read GPIO state.

Note

The GPIO must have been initialized in input mode.

Parameters:
  • port – [in] The GPIO port to read.

  • 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

quasar_gpio_port_t port

GPIO port selection.

quasar_gpio_pin_t pin
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.