libopencm3
A free/libre/open-source firmware library for various ARM Cortex-M3 microcontrollers.
GPIO peripheral API
Collaboration diagram for GPIO peripheral API:

Functions

void gpio_enable_lock (void)
 Enable GPIO registers lock. More...
 
void gpio_disable_lock (void)
 Disable GPIO registers lock. More...
 
bool gpio_get_lock_flag (void)
 Get GPIO register lock flag. More...
 
void gpio_set_drive_strength (uint32_t gpio_port, enum gpio_drive_strength drive_stength)
 Set port pins drive strength. More...
 
void gpio_mode_setup (uint32_t gpio_port, enum gpio_mode mode, uint16_t gpios)
 Set port pins mode. More...
 
void gpio_set (uint32_t gpio_port, uint16_t gpios)
 Set port pins output value (Atomic) More...
 
void gpio_clear (uint32_t gpio_port, uint16_t gpios)
 Set port pins output value (Atomic) More...
 
uint16_t gpio_get (uint32_t gpio_port, uint16_t gpios)
 Get port pins input value. More...
 
void gpio_toggle (uint32_t gpio_port, uint16_t gpios)
 Toggle port pins output value (Atomic) More...
 
uint16_t gpio_port_read (uint32_t gpio_port)
 Get port (all) input value's. More...
 
void gpio_port_write (uint32_t gpio_port, uint16_t data)
 Set port (all) output value's. More...
 
void gpio_port_config_lock (uint32_t gpio_port, uint16_t gpios)
 Lock the Configuration of a Group of Pins. More...
 

Detailed Description

Function Documentation

◆ gpio_clear()

void gpio_clear ( uint32_t  gpio_port,
uint16_t  gpios 
)

Set port pins output value (Atomic)

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)

Definition at line 118 of file gpio_common.c.

References GPIO_P_DOUTCLR.

◆ gpio_disable_lock()

void gpio_disable_lock ( void  )

Disable GPIO registers lock.

See also
gpio_enable_lock()
gpio_get_lock_flag()

Definition at line 42 of file gpio_common.c.

References GPIO_LOCK, and GPIO_LOCK_LOCKKEY_UNLOCK.

◆ gpio_enable_lock()

void gpio_enable_lock ( void  )

Enable GPIO registers lock.

See also
gpio_disable_lock()
gpio_get_lock_flag()

Definition at line 32 of file gpio_common.c.

References GPIO_LOCK, and GPIO_LOCK_LOCKKEY_LOCK.

◆ gpio_get()

uint16_t gpio_get ( uint32_t  gpio_port,
uint16_t  gpios 
)

Get port pins input value.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)
Returns
masked pins value (separated by bitwise OR '|')

Definition at line 130 of file gpio_common.c.

References GPIO_P_DIN.

◆ gpio_get_lock_flag()

bool gpio_get_lock_flag ( void  )

Get GPIO register lock flag.

Return values
trueif flag is set
falseif flag is not set
See also
gpio_enable_lock()
gpio_disable_lock()

Definition at line 54 of file gpio_common.c.

References GPIO_LOCK, GPIO_LOCK_LOCKKEY_LOCKED, and GPIO_LOCK_LOCKKEY_MASK.

◆ gpio_mode_setup()

void gpio_mode_setup ( uint32_t  gpio_port,
enum gpio_mode  mode,
uint16_t  gpios 
)

Set port pins mode.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]modeMode (use GPIO_MODE_*)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)

Definition at line 78 of file gpio_common.c.

References GPIO_P_MODE_MODEx, GPIO_P_MODEH, and GPIO_P_MODEL.

◆ gpio_port_config_lock()

void gpio_port_config_lock ( uint32_t  gpio_port,
uint16_t  gpios 
)

Lock the Configuration of a Group of Pins.

The configuration of one or more pins of the given GPIO port is locked. There is no mechanism to unlock these via software. Unlocking occurs at the next reset.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)

Definition at line 177 of file gpio_common.c.

References GPIO_P_PINLOCKN.

◆ gpio_port_read()

uint16_t gpio_port_read ( uint32_t  gpio_port)

Get port (all) input value's.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
Returns
all pins input value

Definition at line 151 of file gpio_common.c.

References GPIO_P_DIN.

◆ gpio_port_write()

void gpio_port_write ( uint32_t  gpio_port,
uint16_t  data 
)

Set port (all) output value's.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]dataData (all pins output value)

Definition at line 161 of file gpio_common.c.

References GPIO_P_DOUT.

◆ gpio_set()

void gpio_set ( uint32_t  gpio_port,
uint16_t  gpios 
)

Set port pins output value (Atomic)

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)

Definition at line 107 of file gpio_common.c.

References GPIO_P_DOUTSET.

◆ gpio_set_drive_strength()

void gpio_set_drive_strength ( uint32_t  gpio_port,
enum gpio_drive_strength  drive_stength 
)

Set port pins drive strength.

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]drive_stengthDriver Stength (use GPIO_STENGTH_*)

Definition at line 65 of file gpio_common.c.

References GPIO_P_CTRL, and GPIO_P_CTRL_DRIVEMODE.

◆ gpio_toggle()

void gpio_toggle ( uint32_t  gpio_port,
uint16_t  gpios 
)

Toggle port pins output value (Atomic)

Parameters
[in]gpio_portGPIO Port (use GPIO* ex. GPIOA, GPIOB, ....)
[in]gpios(pins mask (use GPIO* ex . GPIO0, GPIO1 .... GPIO_ALL, use bitwise OR '|' to separate)

Definition at line 141 of file gpio_common.c.

References GPIO_P_DOUTTGL.