GPIO - General Purpose Input/Output

Description

General Purpose Input/Output (GPIO) API.

This module contains functions to control the GPIO peripheral of Silicon Labs 32-bit MCUs and SoCs. The GPIO peripheral is used for pin configuration and direct pin manipulation and sensing as well as routing for peripheral pin connections.

Functions

void GPIO_DbgLocationSet (unsigned int location)
Sets the pin location of the debug pins (Serial Wire interface).
void GPIO_DriveModeSet ( GPIO_Port_TypeDef port, GPIO_DriveMode_TypeDef mode)
Sets drive mode for a GPIO port.
void GPIO_ExtIntConfig ( GPIO_Port_TypeDef port, unsigned int pin, unsigned int intNo, bool risingEdge, bool fallingEdge, bool enable)
Configure the GPIO external pin interrupt.
void GPIO_PinModeSet ( GPIO_Port_TypeDef port, unsigned int pin, GPIO_Mode_TypeDef mode, unsigned int out)
Set the mode for a GPIO pin.
GPIO_Mode_TypeDef GPIO_PinModeGet ( GPIO_Port_TypeDef port, unsigned int pin)
Get the mode for a GPIO pin.
void GPIO_EM4EnablePinWakeup (uint32_t pinmask, uint32_t polaritymask)
Enable GPIO pin wake-up from EM4.
void GPIO_DbgSWDClkEnable (bool enable)
Enable/disable serial wire clock pin.
void GPIO_DbgSWDIOEnable (bool enable)
Enable/disable serial wire data I/O pin.
void GPIO_DbgSWOEnable (bool enable)
Enable/Disable serial wire output pin.
void GPIO_EM4DisablePinWakeup (uint32_t pinmask)
Disable GPIO pin wake-up from EM4.
uint32_t GPIO_EM4GetPinWakeupCause (void)
Check which GPIO pin(s) that caused a wake-up from EM4.
void GPIO_EM4SetPinRetention (bool enable)
Enable GPIO pin retention of output enable, output value, pull enable, and pull direction in EM4.
void GPIO_InputSenseSet (uint32_t val, uint32_t mask)
Enable/disable input sensing.
void GPIO_IntClear (uint32_t flags)
Clear one or more pending GPIO interrupts.
void GPIO_IntDisable (uint32_t flags)
Disable one or more GPIO interrupts.
void GPIO_IntEnable (uint32_t flags)
Enable one or more GPIO interrupts.
uint32_t GPIO_IntGet (void)
Get pending GPIO interrupts.
uint32_t GPIO_IntGetEnabled (void)
Get enabled and pending GPIO interrupt flags.
void GPIO_IntSet (uint32_t flags)
Set one or more pending GPIO interrupts from SW.
void GPIO_Lock (void)
Locks the GPIO configuration.
unsigned int GPIO_PinInGet ( GPIO_Port_TypeDef port, unsigned int pin)
Read the pad value for a single pin in a GPIO port.
void GPIO_PinLock ( GPIO_Port_TypeDef port, unsigned int pin)
Lock all GPIO configuration settings for a given pin.
void GPIO_PinOutClear ( GPIO_Port_TypeDef port, unsigned int pin)
Set a single pin in GPIO data out port register to 0.
unsigned int GPIO_PinOutGet ( GPIO_Port_TypeDef port, unsigned int pin)
Get current setting for a pin in a GPIO port data out register.
void GPIO_PinOutSet ( GPIO_Port_TypeDef port, unsigned int pin)
Set a single pin in GPIO data out register to 1.
void GPIO_PinOutToggle ( GPIO_Port_TypeDef port, unsigned int pin)
Toggle a single pin in GPIO port data out register.
uint32_t GPIO_PortInGet ( GPIO_Port_TypeDef port)
Read the pad values for GPIO port.
void GPIO_PortOutClear ( GPIO_Port_TypeDef port, uint32_t pins)
Set bits in DOUT register for a port to 0.
uint32_t GPIO_PortOutGet ( GPIO_Port_TypeDef port)
Get current setting for a GPIO port data out register.
void GPIO_PortOutSet ( GPIO_Port_TypeDef port, uint32_t pins)
Set bits GPIO data out register to 1.
void GPIO_PortOutSetVal ( GPIO_Port_TypeDef port, uint32_t val, uint32_t mask)
Set GPIO port data out register.
void GPIO_PortOutToggle ( GPIO_Port_TypeDef port, uint32_t pins)
Toggle pins in GPIO port data out register.
void GPIO_Unlock (void)
Unlocks the GPIO configuration.
void GPIO_IntConfig ( GPIO_Port_TypeDef port, unsigned int pin, bool risingEdge, bool fallingEdge, bool enable)
Configure GPIO interrupt.

Enumerations

enum GPIO_Port_TypeDef {
gpioPortA = 0,
gpioPortB = 1,
gpioPortC = 2,
gpioPortD = 3,
gpioPortE = 4,
gpioPortF = 5
}
GPIO ports IDs.
enum GPIO_DriveMode_TypeDef {
gpioDriveModeStandard = GPIO_P_CTRL_DRIVEMODE_STANDARD,
gpioDriveModeLowest = GPIO_P_CTRL_DRIVEMODE_LOWEST,
gpioDriveModeHigh = GPIO_P_CTRL_DRIVEMODE_HIGH,
gpioDriveModeLow = GPIO_P_CTRL_DRIVEMODE_LOW
}
GPIO drive mode.
enum GPIO_Mode_TypeDef {
gpioModeDisabled = _GPIO_P_MODEL_MODE0_DISABLED,
gpioModeInput = _GPIO_P_MODEL_MODE0_INPUT,
gpioModeInputPull = _GPIO_P_MODEL_MODE0_INPUTPULL,
gpioModeInputPullFilter = _GPIO_P_MODEL_MODE0_INPUTPULLFILTER,
gpioModePushPull = _GPIO_P_MODEL_MODE0_PUSHPULL,
gpioModePushPullDrive = _GPIO_P_MODEL_MODE0_PUSHPULLDRIVE,
gpioModeWiredOr = _GPIO_P_MODEL_MODE0_WIREDOR,
gpioModeWiredOrPullDown = _GPIO_P_MODEL_MODE0_WIREDORPULLDOWN,
gpioModeWiredAnd = _GPIO_P_MODEL_MODE0_WIREDAND,
gpioModeWiredAndFilter = _GPIO_P_MODEL_MODE0_WIREDANDFILTER,
gpioModeWiredAndPullUp = _GPIO_P_MODEL_MODE0_WIREDANDPULLUP,
gpioModeWiredAndPullUpFilter = _GPIO_P_MODEL_MODE0_WIREDANDPULLUPFILTER,
gpioModeWiredAndDrive = _GPIO_P_MODEL_MODE0_WIREDANDDRIVE,
gpioModeWiredAndDriveFilter = _GPIO_P_MODEL_MODE0_WIREDANDDRIVEFILTER,
gpioModeWiredAndDrivePullUp = _GPIO_P_MODEL_MODE0_WIREDANDDRIVEPULLUP,
gpioModeWiredAndDrivePullUpFilter = _GPIO_P_MODEL_MODE0_WIREDANDDRIVEPULLUPFILTER
}
Pin mode.

Function Documentation

GPIO_DbgLocationSet()

void GPIO_DbgLocationSet ( unsigned int location )

Sets the pin location of the debug pins (Serial Wire interface).

Note
Changing the pins used for debugging uncontrolled, may result in a lockout.
Parameters
[in] location The debug pin location to use (0-3).

GPIO_DriveModeSet()

void GPIO_DriveModeSet ( GPIO_Port_TypeDef port,
GPIO_DriveMode_TypeDef mode
)

Sets drive mode for a GPIO port.

Parameters
[in] port The GPIO port to access.
[in] mode Drive mode to use for the port.

GPIO_ExtIntConfig()

void GPIO_ExtIntConfig ( GPIO_Port_TypeDef port,
unsigned int pin,
unsigned int intNo,
bool risingEdge,
bool fallingEdge,
bool enable
)

Configure the GPIO external pin interrupt.

It is recommended to disable interrupts before configuring the GPIO pin interrupt. See GPIO_IntDisable() for more information.

The GPIO interrupt handler must be in place before enabling the interrupt.

Notice that any pending interrupt for the selected interrupt is cleared by this function.

Note
On series 0 devices, the pin number parameter is not used. The pin number used on these devices is hardwired to the interrupt with the same number.
On series 1 devices, the pin number can be selected freely within a group. Interrupt numbers are divided into 4 groups (intNo / 4) and valid pin number within the interrupt groups are: 0: pins 0-3 (interrupt number 0-3) 1: pins 4-7 (interrupt number 4-7) 2: pins 8-11 (interrupt number 8-11) 3: pins 12-15 (interrupt number 12-15)
Parameters
[in] port The port to associate with the pin .
[in] pin The pin number on the port.
[in] intNo The interrupt number to trigger.
[in] risingEdge Set to true if the interrupt will be enabled on the rising edge. Otherwise, false.
[in] fallingEdge Set to true if the interrupt will be enabled on the falling edge. Otherwise, false.
[in] enable Set to true if the interrupt will be enabled after the configuration is complete. False to leave disabled. See GPIO_IntDisable() and GPIO_IntEnable() .

GPIO_PinModeSet()

void GPIO_PinModeSet ( GPIO_Port_TypeDef port,
unsigned int pin,
GPIO_Mode_TypeDef mode,
unsigned int out
)

Set the mode for a GPIO pin.

Parameters
[in] port The GPIO port to access.
[in] pin The pin number in the port.
[in] mode The desired pin mode.
[in] out A value to set for the pin in the DOUT register. The DOUT setting is important for some input mode configurations to determine the pull-up/down direction.

GPIO_PinModeGet()

GPIO_Mode_TypeDef GPIO_PinModeGet ( GPIO_Port_TypeDef port,
unsigned int pin
)

Get the mode for a GPIO pin.

Parameters
[in] port The GPIO port to access.
[in] pin The pin number in the port.
Returns
The pin mode.

GPIO_EM4EnablePinWakeup()

void GPIO_EM4EnablePinWakeup ( uint32_t pinmask,
uint32_t polaritymask
)

Enable GPIO pin wake-up from EM4.

When the function exits, EM4 mode can be safely entered.

Note
It is assumed that the GPIO pin modes are set correctly. Valid modes are gpioModeInput and gpioModeInputPull .
Parameters
[in] pinmask A bitmask containing the bitwise logic OR of which GPIO pin(s) to enable. See Reference Manuals for a pinmask to the GPIO port/pin mapping.
[in] polaritymask A bitmask containing the bitwise logic OR of GPIO pin(s) wake-up polarity. See Reference Manuals for pinmask-to-GPIO port/pin mapping.

GPIO_DbgSWDClkEnable()

void GPIO_DbgSWDClkEnable ( bool enable )
inline

Enable/disable serial wire clock pin.

Note
Disabling SWDClk will disable the debug interface, which may result in a lockout if done early in startup (before debugger is able to halt core).
Parameters
[in] enable
  • false - disable serial wire clock.
  • true - enable serial wire clock (default after reset).

GPIO_DbgSWDIOEnable()