oveRTOS C API
Embedded RTOS framework — build system, configuration, and portable C API
Loading...
Searching...
No Matches
Typedefs | Enumerations | Functions
GPIO

General-purpose I/O pin control. More...

Typedefs

typedef void(* ove_gpio_irq_cb) (unsigned int port, unsigned int pin, void *user_data)
 GPIO interrupt callback type.
 

Enumerations

enum  ove_gpio_mode_t { OVE_GPIO_MODE_INPUT = 0 , OVE_GPIO_MODE_OUTPUT_PP = 1 , OVE_GPIO_MODE_OUTPUT_OD = 2 }
 GPIO pin direction and drive mode. More...
 
enum  ove_gpio_irq_mode_t { OVE_GPIO_IRQ_RISING = 0x01 , OVE_GPIO_IRQ_FALLING = 0x02 , OVE_GPIO_IRQ_BOTH = 0x03 }
 GPIO interrupt trigger edge selection. More...
 

Functions

int ove_gpio_configure (unsigned int port, unsigned int pin, ove_gpio_mode_t mode)
 Configure the direction and drive mode of a GPIO pin.
 
int ove_gpio_set (unsigned int port, unsigned int pin, int value)
 Set the output level of a GPIO pin.
 
int ove_gpio_get (unsigned int port, unsigned int pin)
 Read the current logical level of a GPIO pin.
 
int ove_gpio_irq_register (unsigned int port, unsigned int pin, ove_gpio_irq_mode_t mode, ove_gpio_irq_cb callback, void *user_data)
 Register an interrupt callback for a GPIO pin.
 
int ove_gpio_irq_enable (unsigned int port, unsigned int pin)
 Enable a previously registered GPIO interrupt.
 
int ove_gpio_irq_disable (unsigned int port, unsigned int pin)
 Disable a previously enabled GPIO interrupt without unregistering it.
 

Detailed Description

General-purpose I/O pin control.

Provides pin configuration, digital read/write, and interrupt registration for GPIO ports and pins.

Note
Requires CONFIG_OVE_GPIO. When the option is disabled every function is replaced by a no-op stub that returns OVE_ERR_NOT_SUPPORTED.

Typedef Documentation

◆ ove_gpio_irq_cb

typedef void(* ove_gpio_irq_cb) (unsigned int port, unsigned int pin, void *user_data)

GPIO interrupt callback type.

Called from interrupt context (or a deferred work item, depending on the backend) when the configured edge is detected.

Parameters
[in]portGPIO port index that generated the interrupt.
[in]pinGPIO pin index that generated the interrupt.
[in]user_dataOpaque pointer supplied at registration time.

Enumeration Type Documentation

◆ ove_gpio_mode_t

GPIO pin direction and drive mode.

Enumerator
OVE_GPIO_MODE_INPUT 

High-impedance digital input.

OVE_GPIO_MODE_OUTPUT_PP 

Push-pull digital output.

OVE_GPIO_MODE_OUTPUT_OD 

Open-drain digital output.

◆ ove_gpio_irq_mode_t

GPIO interrupt trigger edge selection.

Enumerator
OVE_GPIO_IRQ_RISING 

Trigger on rising edge only.

OVE_GPIO_IRQ_FALLING 

Trigger on falling edge only.

OVE_GPIO_IRQ_BOTH 

Trigger on both edges.

Function Documentation

◆ ove_gpio_configure()

int ove_gpio_configure ( unsigned int  port,
unsigned int  pin,
ove_gpio_mode_t  mode 
)

Configure the direction and drive mode of a GPIO pin.

Parameters
[in]portGPIO port index (0-based).
[in]pinGPIO pin index within the port (0-based).
[in]modeDesired pin mode (ove_gpio_mode_t).
Returns
OVE_OK on success, negative error code on failure.

◆ ove_gpio_set()

int ove_gpio_set ( unsigned int  port,
unsigned int  pin,
int  value 
)

Set the output level of a GPIO pin.

The pin must have been configured as an output (OVE_GPIO_MODE_OUTPUT_PP or OVE_GPIO_MODE_OUTPUT_OD) before calling this function.

Parameters
[in]portGPIO port index.
[in]pinGPIO pin index within the port.
[in]valueNon-zero to drive the pin high, zero to drive it low.
Returns
OVE_OK on success, negative error code on failure.

◆ ove_gpio_get()

int ove_gpio_get ( unsigned int  port,
unsigned int  pin 
)

Read the current logical level of a GPIO pin.

Parameters
[in]portGPIO port index.
[in]pinGPIO pin index within the port.
Returns
1 if the pin is high, 0 if low, negative error code on failure.

◆ ove_gpio_irq_register()

int ove_gpio_irq_register ( unsigned int  port,
unsigned int  pin,
ove_gpio_irq_mode_t  mode,
ove_gpio_irq_cb  callback,
void *  user_data 
)

Register an interrupt callback for a GPIO pin.

The interrupt is registered but not enabled; call ove_gpio_irq_enable() to arm it.

Parameters
[in]portGPIO port index.
[in]pinGPIO pin index within the port.
[in]modeEdge(s) that should trigger the interrupt.
[in]callbackFunction called when the interrupt fires.
[in]user_dataOpaque pointer forwarded to callback.
Returns
OVE_OK on success, negative error code on failure.

◆ ove_gpio_irq_enable()

int ove_gpio_irq_enable ( unsigned int  port,
unsigned int  pin 
)

Enable a previously registered GPIO interrupt.

Parameters
[in]portGPIO port index.
[in]pinGPIO pin index within the port.
Returns
OVE_OK on success, negative error code on failure.

◆ ove_gpio_irq_disable()

int ove_gpio_irq_disable ( unsigned int  port,
unsigned int  pin 
)

Disable a previously enabled GPIO interrupt without unregistering it.

The callback and trigger edge are retained; call ove_gpio_irq_enable() to re-arm.

Parameters
[in]portGPIO port index.
[in]pinGPIO pin index within the port.
Returns
OVE_OK on success, negative error code on failure.