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_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_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_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_EnabledIntGet (void) | 
| Get enabled 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) | 
| Lock 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. | |
| GPIO_Mode_TypeDef | GPIO_PinModeGet ( GPIO_Port_TypeDef port, unsigned int pin) | 
| Get the mode for a GPIO pin. | |
| void | GPIO_PinModeSet ( GPIO_Port_TypeDef port, unsigned int pin, GPIO_Mode_TypeDef mode, unsigned int out) | 
| Set the mode for a GPIO 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 the 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) | 
| Unlock the GPIO configuration. | |
| SL_DEPRECATED_API_SDK_4_1 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] locationThe debug pin location to use (0-3). 
◆ GPIO_DbgSWDClkEnable()
| 
 | 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()
| 
 | inline | 
Enable/disable serial wire data I/O 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 data pin.
- true - enable serial wire data pin (default after reset).
 
◆ GPIO_DbgSWOEnable()
| 
 | inline | 
Enable/Disable serial wire output pin.
- Note
- Enabling this pin is not sufficient to fully enable serial wire output, which is also dependent on issues outside the GPIO module. Refer to DBG_SWOEnable() .
- Warning
- If debug port is locked, SWO pin is not disabled automatically. To avoid information leakage through SWO, disable SWO pin after locking debug port.
- Parameters
- 
         [in] enable- false - disable serial wire viewer pin (default after reset).
- true - enable serial wire viewer pin.
 
◆ GPIO_DriveModeSet()
| void GPIO_DriveModeSet | ( | GPIO_Port_TypeDef | 
            port,
            | 
| GPIO_DriveMode_TypeDef | 
            mode
            | ||
| ) | 
Sets drive mode for a GPIO port.
- Parameters
- 
         [in] portThe GPIO port to access. [in] modeDrive 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] portThe port to associate with the pin.[in] pinThe pin number on the port. [in] intNoThe interrupt number to trigger. [in] risingEdgeSet to true if the interrupt will be enabled on the rising edge. Otherwise, false. [in] fallingEdgeSet to true if the interrupt will be enabled on the falling edge. Otherwise, false. [in] enableSet to true if the interrupt will be enabled after the configuration is complete. False to leave disabled. See GPIO_IntDisable() and GPIO_IntEnable() . 
◆ GPIO_InputSenseSet()
| 
 | inline | 
Enable/disable input sensing.
Disabling input sensing if not used, can save some energy consumption.
- Parameters
- 
         [in] valBitwise logic OR of one or more of: - GPIO_INSENSE_INT - interrupt input sensing.
- GPIO_INSENSE_PRS - peripheral reflex system input sensing.
 [in] maskMask containing bitwise logic OR of bits similar as for valused to indicate which input sense options to disable/enable.
◆ GPIO_IntClear()
| 
 | inline | 
Clear one or more pending GPIO interrupts.
- Parameters
- 
         [in] flagsBitwise logic OR of GPIO interrupt sources to clear. 
◆ GPIO_IntDisable()
| 
 | inline | 
Disable one or more GPIO interrupts.
- Parameters
- 
         [in] flagsGPIO interrupt sources to disable. 
◆ GPIO_IntEnable()
| 
 | inline | 
Enable one or more GPIO interrupts.
- Note
- Depending on the use, a pending interrupt may already be set prior to enabling the interrupt. To ignore a pending interrupt, consider using GPIO_IntClear() prior to enabling the interrupt.
- Parameters
- 
         [in] flagsGPIO interrupt sources to enable. 
◆ GPIO_EnabledIntGet()
| 
 | inline | 
Get enabled GPIO interrupts.
- Returns
- Enabled GPIO interrupt sources.
◆ GPIO_IntGet()
| 
 | inline | 
Get pending GPIO interrupts.
- Returns
- GPIO interrupt sources pending.
◆ GPIO_IntGetEnabled()
| 
 | inline | 
Get enabled and pending GPIO interrupt flags.
Useful for handling more interrupt sources in the same interrupt handler.
- Note
- Interrupt flags are not cleared by the use of this function.
- Returns
- 
         Pending and enabled GPIO interrupt sources. The return value is the bitwise AND combination of
         - the OR combination of enabled interrupt sources in GPIO_IEN register and
- the OR combination of valid interrupt flags in GPIO_IF register.
 
◆ GPIO_IntSet()
| 
 | inline | 
Set one or more pending GPIO interrupts from SW.
- Parameters
- 
         [in] flagsGPIO interrupt sources to set to pending. 
◆ GPIO_Lock()
| 
 | inline | 
Lock the GPIO configuration.
◆ GPIO_PinInGet()
| 
 | inline | 
Read the pad value for a single pin in a GPIO port.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin number to read. 
- Returns
- The pin value, 0 or 1.
◆ GPIO_PinLock()
| 
 | inline | 
Lock all GPIO configuration settings for a given pin.
The lock can only be cleared by a chip reset.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin number to lock. 
◆ GPIO_PinModeGet()
| GPIO_Mode_TypeDef GPIO_PinModeGet | ( | GPIO_Port_TypeDef | 
            port,
            | 
| unsigned int | 
            pin
            | ||
| ) | 
Get the mode for a GPIO pin.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin number in the port. 
- Returns
- The pin mode.
◆ 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] portThe GPIO port to access. [in] pinThe pin number in the port. [in] modeThe desired pin mode. [in] outA 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_PinOutClear()
| 
 | inline | 
Set a single pin in GPIO data out port register to 0.
- Note
- To ensure that the setting takes effect on the output pad, the pin must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin to set. 
◆ GPIO_PinOutGet()
| 
 | inline | 
Get current setting for a pin in a GPIO port data out register.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin to get setting for. 
- Returns
- The DOUT setting for the requested pin, 0 or 1.
◆ GPIO_PinOutSet()
| 
 | inline | 
Set a single pin in GPIO data out register to 1.
- Note
- To ensure that the setting takes effect on the output pad, the pin must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin to set. 
◆ GPIO_PinOutToggle()
| 
 | inline | 
Toggle a single pin in GPIO port data out register.
- Note
- To ensure that the setting takes effect on the output pad, the pin must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinThe pin to toggle. 
◆ GPIO_PortInGet()
| 
 | inline | 
Read the pad values for GPIO port.
- Parameters
- 
         [in] portThe GPIO port to access. 
- Returns
- The pad values for the GPIO port.
◆ GPIO_PortOutClear()
| 
 | inline | 
Set bits in DOUT register for a port to 0.
- Note
- To ensure that the setting takes effect on the output pad, the pin must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinsBit mask for bits to clear in DOUT register. 
◆ GPIO_PortOutGet()
| 
 | inline | 
Get the current setting for a GPIO port data out register.
- Parameters
- 
         [in] portThe GPIO port to access. 
- Returns
- The data out setting for the requested port.
◆ GPIO_PortOutSet()
| 
 | inline | 
Set bits GPIO data out register to 1.
- Note
- To ensure that the setting takes effect on the respective output pads, the pins must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinsBit mask for bits to set to 1 in DOUT register. 
◆ GPIO_PortOutSetVal()
| 
 | inline | 
Set GPIO port data out register.
- Note
- To ensure that the setting takes effect on the respective output pads, the pins must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] valValue to write to port data out register. [in] maskMask indicating which bits to modify. 
◆ GPIO_PortOutToggle()
| 
 | inline | 
Toggle pins in GPIO port data out register.
- Note
- To ensure that the setting takes effect on the output pad, the pin must be configured properly. If not, it will take effect whenever the pin has been properly configured.
- Parameters
- 
         [in] portThe GPIO port to access. [in] pinsBit mask with pins to toggle. 
◆ GPIO_Unlock()
| 
 | inline | 
Unlock the GPIO configuration.
◆ GPIO_IntConfig()
| 
 | inline | 
Configure GPIO interrupt.
If reconfiguring a GPIO interrupt that is already enabled, it is generally recommended to disable it first, see GPIO_IntDisable() .
The actual GPIO interrupt handler must be in place before enabling the interrupt.
Notice that any pending interrupt for the selected pin is cleared by this function.
- Note
- A certain pin number can only be associated with one port; i.e., if GPIO interrupt 1 is assigned to port A/pin 1, then it is not possible to use pin 1 from any other ports for interrupts. Refer to the reference manual. On devices which implement GPIO_EXTIPINSEL registers a more flexible approach is possible, refer to GPIO_ExtIntConfig() .
- Parameters
- 
         [in] portThe port to associate with pin.[in] pinThe pin number on the port ( == GPIO EXTI interrupt number). [in] risingEdgeSet to true if interrupts will be enabled on rising edge, otherwise false. [in] fallingEdgeSet to true if interrupts will be enabled on falling edge, otherwise false. [in] enableSet to true if interrupt will be enabled after configuration completed, false to leave disabled. See GPIO_IntDisable() and GPIO_IntEnable() . 
Enumeration Type Documentation
◆ GPIO_Port_TypeDef
| enum GPIO_Port_TypeDef | 
◆ GPIO_DriveMode_TypeDef
◆ GPIO_Mode_TypeDef
| enum GPIO_Mode_TypeDef | 
Pin mode.
For more details on each mode, refer to the reference manual.