MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
GPIO: General Purpose I/O

Overview

The MCUXpresso SDK provides Peripheral driver for the General Purpose I/O (GPIO) module of MCUXpresso SDK devices.

Function groups

Initialization and deinitialization

The function GPIO_PinInit() initializes the GPIO with specified configuration.

Pin manipulation

The function GPIO_WritePinOutput() set output state of selected GPIO pin. The function GPIO_ReadPinInput() read input value of selected GPIO pin.

Port manipulation

The function GPIO_SetPinsOutput() sets the output level of selected GPIO pins to the logic 1. The function GPIO_ClearPinsOutput() sets the output level of selected GPIO pins to the logic 1. The function GPIO_TogglePinsOutput() reverse the output level of selected GPIO pins. The function GPIO_ReadPinsInput() read input value of selected port.

Port masking

The function GPIO_SetPortMask() set port mask, only pins masked by 0 will be enabled in following functions. The function GPIO_WriteMPort() sets the state of selected GPIO port, only pins masked by 0 will be affected. The function GPIO_ReadMPort() reads the state of selected GPIO port, only pins masked by 0 are enabled for read, pins masked by 1 are read as 0.

Typical use case

Example use of GPIO API.

int main(void)
{
uint32_t port_state = 0;
/* Define the init structure for the output LED pin*/
gpio_pin_config_t led_config = {
};
/* Board pin, clock, debug console init */
BOARD_InitHardware();
/* Init output LED GPIO. */
GPIO_PinInit(GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, &led_config);
GPIO_WritePinOutput(GPIO, BOARD_LED_GREEN_GPIO_PORT, BOARD_LED_GREEN_GPIO_PIN, 1);
GPIO_PinInit(GPIO, BOARD_LED_GPIO_PORT, BOARD_LED_GPIO_PIN, &led_config);
GPIO_WritePinOutput(GPIO, BOARD_LED_GPIO_PORT, BOARD_LED_GPIO_PIN, 1);
GPIO_PinInit(GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, &led_config);
GPIO_WritePinOutput(GPIO, BOARD_LED_BLUE_GPIO_PORT, BOARD_LED_BLUE_GPIO_PIN, 1);
GPIO_ClearPinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN | 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_SetPinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN | 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_ClearPinsOutput(GPIO, 1, 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_SetPinsOutput(GPIO, 1, 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN | 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN | 1 << BOARD_LED_BLUE_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, 1, 1 << BOARD_LED_GREEN_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, BOARD_LED_GPIO_PORT, 1 << BOARD_LED_GPIO_PIN);
GPIO_TogglePinsOutput(GPIO, BOARD_LED_GPIO_PORT, 1 << BOARD_LED_GPIO_PIN);
/* Port masking */
GPIO_SetPortMask(GPIO, BOARD_LED_GPIO_PORT, 0x0000ffff);
GPIO_WriteMPort(GPIO, BOARD_LED_GPIO_PORT, 0xffffffff);
port_state = GPIO_ReadPinsInput(GPIO, 0);
port_state = GPIO_ReadMPort(GPIO, 0);
while (1)
{
port_state = GPIO_ReadPinsInput(GPIO, 0);
if (!(port_state & (1 << BOARD_SW1_GPIO_PIN)))
{
GPIO_TogglePinsOutput(GPIO, BOARD_LED_GPIO_PORT, 1u << BOARD_LED_GPIO_PIN);
}
if (!GPIO_ReadPinInput(GPIO, BOARD_SW2_GPIO_PORT, BOARD_SW2_GPIO_PIN))
{
GPIO_TogglePinsOutput(GPIO, BOARD_LED_GREEN_GPIO_PORT, 1u << BOARD_LED_GREEN_GPIO_PIN);
}
delay();
}
}

Files

file  fsl_gpio.h
 

Data Structures

struct  gpio_pin_config_t
 The GPIO pin configuration structure. More...
 

Enumerations

enum  gpio_pin_direction_t {
  kGPIO_DigitalInput = 0U,
  kGPIO_DigitalOutput = 1U
}
 LPC GPIO direction definition. More...
 

Functions

static void GPIO_SetPinsOutput (GPIO_Type *base, uint32_t port, uint32_t mask)
 Sets the output level of the multiple GPIO pins to the logic 1. More...
 
static void GPIO_ClearPinsOutput (GPIO_Type *base, uint32_t port, uint32_t mask)
 Sets the output level of the multiple GPIO pins to the logic 0. More...
 
static void GPIO_TogglePinsOutput (GPIO_Type *base, uint32_t port, uint32_t mask)
 Reverses current output logic of the multiple GPIO pins. More...
 

Driver version

#define FSL_GPIO_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))
 LPC GPIO driver version 2.0.0. More...
 

GPIO Configuration

void GPIO_PinInit (GPIO_Type *base, uint32_t port, uint32_t pin, const gpio_pin_config_t *config)
 Initializes a GPIO pin used by the board. More...
 

GPIO Output Operations

static void GPIO_WritePinOutput (GPIO_Type *base, uint32_t port, uint32_t pin, uint8_t output)
 Sets the output level of the one GPIO pin to the logic 1 or 0. More...
 

GPIO Input Operations

static uint32_t GPIO_ReadPinInput (GPIO_Type *base, uint32_t port, uint32_t pin)
 Reads the current input value of the GPIO PIN. More...
 

Data Structure Documentation

struct gpio_pin_config_t

Every pin can only be configured as either output pin or input pin at a time. If configured as a input pin, then leave the outputConfig unused.

Data Fields

gpio_pin_direction_t pinDirection
 GPIO direction, input or output.
 
uint8_t outputLogic
 Set default output logic, no use in input.
 

Macro Definition Documentation

#define FSL_GPIO_DRIVER_VERSION   (MAKE_VERSION(2, 0, 0))

Enumeration Type Documentation

Enumerator
kGPIO_DigitalInput 

Set current pin as digital input.

kGPIO_DigitalOutput 

Set current pin as digital output.

Function Documentation

void GPIO_PinInit ( GPIO_Type *  base,
uint32_t  port,
uint32_t  pin,
const gpio_pin_config_t config 
)

To initialize the GPIO, define a pin configuration, either input or output, in the user file. Then, call the GPIO_PinInit() function.

This is an example to define an input pin or output pin configuration:

* // Define a digital input pin configuration,
* {
* 0,
* }
* //Define a digital output pin configuration,
* {
* 0,
* }
*
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
pinGPIO pin number
configGPIO pin configuration pointer
static void GPIO_WritePinOutput ( GPIO_Type *  base,
uint32_t  port,
uint32_t  pin,
uint8_t  output 
)
inlinestatic
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
pinGPIO pin number
outputGPIO pin output logic level.
  • 0: corresponding pin output low-logic level.
  • 1: corresponding pin output high-logic level.
static uint32_t GPIO_ReadPinInput ( GPIO_Type *  base,
uint32_t  port,
uint32_t  pin 
)
inlinestatic
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
pinGPIO pin number
Return values
GPIOport input value
  • 0: corresponding pin input low-logic level.
  • 1: corresponding pin input high-logic level.
static void GPIO_SetPinsOutput ( GPIO_Type *  base,
uint32_t  port,
uint32_t  mask 
)
inlinestatic
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
maskGPIO pin number macro
static void GPIO_ClearPinsOutput ( GPIO_Type *  base,
uint32_t  port,
uint32_t  mask 
)
inlinestatic
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
maskGPIO pin number macro
static void GPIO_TogglePinsOutput ( GPIO_Type *  base,
uint32_t  port,
uint32_t  mask 
)
inlinestatic
Parameters
baseGPIO peripheral base pointer(Typically GPIO)
portGPIO port number
maskGPIO pin number macro