| nRF5 SDK v12.0.0 |

Choose documentation: | nRF5 SDK | S130 SoftDevice API | S132 SoftDevice API | S212 SoftDevice API | S332 SoftDevice API

All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Modules | Data Structures | Macros | Typedefs | Functions
GPIOTE driver
GPIOTE abstraction and driver

GPIOTE driver for managing input and output pins. More...

## Modules
| GPIOTE peripheral driver configuration

## Data Structures
struct | nrf_drv_gpiote_in_config_t
| Input pin configuration. More...
struct | nrf_drv_gpiote_out_config_t
| Output pin configuration. More...

## Macros
#define | GPIOTE_CONFIG_IN_SENSE_LOTOHI(hi_accu)
| Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect low-to-high transition. More...
#define | GPIOTE_CONFIG_IN_SENSE_HITOLO(hi_accu)
| Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect high-to-low transition. More...
#define | GPIOTE_CONFIG_IN_SENSE_TOGGLE(hi_accu)
| Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect any change on the pin. More...
#define | GPIOTE_CONFIG_OUT_SIMPLE(init_high)
| Macro for configuring a pin to use as output. GPIOTE is not used for the pin. More...
#define | GPIOTE_CONFIG_OUT_TASK_LOW
| Macro for configuring a pin to use the GPIO OUT TASK to change the state from high to low. More...
#define | GPIOTE_CONFIG_OUT_TASK_HIGH
| Macro for configuring a pin to use the GPIO OUT TASK to change the state from low to high. More...
#define | GPIOTE_CONFIG_OUT_TASK_TOGGLE(init_high)
| Macro for configuring a pin to use the GPIO OUT TASK to toggle the pin state. More...

## Typedefs
typedef uint32_t | nrf_drv_gpiote_pin_t
| Pin.
typedef void(* | nrf_drv_gpiote_evt_handler_t )(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
| Pin event handler prototype. More...

## Functions
ret_code_t | nrf_drv_gpiote_init (void)
| Function for initializing the GPIOTE module. More...
bool | nrf_drv_gpiote_is_init (void)
| Function for checking if the GPIOTE module is initialized. More...
void | nrf_drv_gpiote_uninit (void)
| Function for uninitializing the GPIOTE module.
ret_code_t | nrf_drv_gpiote_out_init (nrf_drv_gpiote_pin_t pin, nrf_drv_gpiote_out_config_t const *p_config)
| Function for initializing a GPIOTE output pin. More...
void | nrf_drv_gpiote_out_uninit (nrf_drv_gpiote_pin_t pin)
| Function for uninitializing a GPIOTE output pin. More...
void | nrf_drv_gpiote_out_set (nrf_drv_gpiote_pin_t pin)
| Function for setting a GPIOTE output pin. More...
void | nrf_drv_gpiote_out_clear (nrf_drv_gpiote_pin_t pin)
| Function for clearing a GPIOTE output pin. More...
void | nrf_drv_gpiote_out_toggle (nrf_drv_gpiote_pin_t pin)
| Function for toggling a GPIOTE output pin. More...
void | nrf_drv_gpiote_out_task_enable (nrf_drv_gpiote_pin_t pin)
| Function for enabling a GPIOTE output pin task. More...
void | nrf_drv_gpiote_out_task_disable (nrf_drv_gpiote_pin_t pin)
| Function for disabling a GPIOTE output pin task. More...
uint32_t | nrf_drv_gpiote_out_task_addr_get (nrf_drv_gpiote_pin_t pin)
| Function for getting the address of a configurable GPIOTE task. More...
ret_code_t | nrf_drv_gpiote_in_init (nrf_drv_gpiote_pin_t pin, nrf_drv_gpiote_in_config_t const *p_config, nrf_drv_gpiote_evt_handler_t evt_handler)
| Function for initializing a GPIOTE input pin. More...
void | nrf_drv_gpiote_in_uninit (nrf_drv_gpiote_pin_t pin)
| Function for uninitializing a GPIOTE input pin. More...
void | nrf_drv_gpiote_in_event_enable (nrf_drv_gpiote_pin_t pin, bool int_enable)
| Function for enabling sensing of a GPIOTE input pin. More...
void | nrf_drv_gpiote_in_event_disable (nrf_drv_gpiote_pin_t pin)
| Function for disabling a GPIOTE input pin. More...
bool | nrf_drv_gpiote_in_is_set (nrf_drv_gpiote_pin_t pin)
| Function for checking if a GPIOTE input pin is set. More...
uint32_t | nrf_drv_gpiote_in_event_addr_get (nrf_drv_gpiote_pin_t pin)
| Function for getting the address of a GPIOTE input pin event. More...
void | nrf_drv_gpiote_out_task_force (nrf_drv_gpiote_pin_t pin, uint8_t state)
| Function for forcing a specific state on the pin configured as task. More...
void | nrf_drv_gpiote_out_task_trigger (nrf_drv_gpiote_pin_t pin)
| Function for triggering the task OUT manually. More...

## Detailed Description

GPIOTE driver for managing input and output pins.

## Macro Definition Documentation

#define GPIOTE_CONFIG_IN_SENSE_HITOLO | ( |  | hi_accu | ) |

Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.pull = NRF_GPIO_PIN_NOPULL, \
.sense = NRF_GPIOTE_POLARITY_HITOLO, \
}

Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect high-to-low transition.

Set hi_accu to true to use IN_EVENT.

#define GPIOTE_CONFIG_IN_SENSE_LOTOHI | ( |  | hi_accu | ) |

Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.pull = NRF_GPIO_PIN_NOPULL, \
.sense = NRF_GPIOTE_POLARITY_LOTOHI, \
}

Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect low-to-high transition.

Set hi_accu to true to use IN_EVENT.

#define GPIOTE_CONFIG_IN_SENSE_TOGGLE | ( |  | hi_accu | ) |

Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.pull = NRF_GPIO_PIN_NOPULL, \
.sense = NRF_GPIOTE_POLARITY_TOGGLE, \
}

Macro for configuring a pin to use a GPIO IN or PORT EVENT to detect any change on the pin.

Set hi_accu to true to use IN_EVENT.

#define GPIOTE_CONFIG_OUT_SIMPLE | ( |  | init_high | ) |

Value:
{ \
.init_state = init_high ? NRF_GPIOTE_INITIAL_VALUE_HIGH : NRF_GPIOTE_INITIAL_VALUE_LOW, \
.task_pin = false, \
}

Macro for configuring a pin to use as output. GPIOTE is not used for the pin.

#define GPIOTE_CONFIG_OUT_TASK_HIGH

Value:
{ \
.init_state = NRF_GPIOTE_INITIAL_VALUE_LOW, \
.task_pin = true, \
.action = NRF_GPIOTE_POLARITY_LOTOHI, \
}

Macro for configuring a pin to use the GPIO OUT TASK to change the state from low to high.

The task will set the pin. Therefore, the pin is cleared initially.

#define GPIOTE_CONFIG_OUT_TASK_LOW

Value:
{ \
.init_state = NRF_GPIOTE_INITIAL_VALUE_HIGH, \
.task_pin = true, \
.action = NRF_GPIOTE_POLARITY_HITOLO, \
}

Macro for configuring a pin to use the GPIO OUT TASK to change the state from high to low.

The task will clear the pin. Therefore, the pin is set initially.

#define GPIOTE_CONFIG_OUT_TASK_TOGGLE | ( |  | init_high | ) |

Value:
{ \
.init_state = init_high ? NRF_GPIOTE_INITIAL_VALUE_HIGH : NRF_GPIOTE_INITIAL_VALUE_LOW, \
.task_pin = true, \
.action = NRF_GPIOTE_POLARITY_TOGGLE, \
}

Macro for configuring a pin to use the GPIO OUT TASK to toggle the pin state.

The initial pin state must be provided.

## Typedef Documentation

typedef void(* nrf_drv_gpiote_evt_handler_t)(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action)

Pin event handler prototype.

Parameters

  pin | Pin that triggered this event.
  action | Action that lead to triggering this event.

## Function Documentation

uint32_t nrf_drv_gpiote_in_event_addr_get | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for getting the address of a GPIOTE input pin event.

If the pin is configured to use low-accuracy mode, the address of the PORT event is returned.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_in_event_disable | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for disabling a GPIOTE input pin.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_in_event_enable | ( | nrf_drv_gpiote_pin_t | pin,
|  | bool | int_enable
| ) |  |

Function for enabling sensing of a GPIOTE input pin.

If the input pin is configured as high-accuracy pin, the function enables an IN_EVENT. Otherwise, the function enables the GPIO sense mechanism. Note that a PORT event is shared between multiple pins, therefore the interrupt is always enabled.

Parameters

  [in] | pin | Pin.
  [in] | int_enable | True to enable the interrupt. Always valid for a high-accuracy pin.

ret_code_t nrf_drv_gpiote_in_init | ( | nrf_drv_gpiote_pin_t | pin,
|  | nrf_drv_gpiote_in_config_t const * | p_config,
|  | nrf_drv_gpiote_evt_handler_t | evt_handler
| ) |  |

Function for initializing a GPIOTE input pin.

The input pin can act in two ways:

- lower accuracy but low power (high frequency clock not needed)
- higher accuracy (high frequency clock required)

The initial configuration specifies which mode is used. If high-accuracy mode is used, the driver attempts to allocate one of the available GPIOTE channels. If no channel is available, an error is returned. In low accuracy mode SENSE feature is used. In this case only one active pin can be detected at a time. It can be worked around by setting all of the used low accuracy pins to toggle mode. For more information about SENSE functionality, refer to Product Specification.

Parameters

  [in] | pin | Pin.
  [in] | p_config | Initial configuration.
  [in] | evt_handler | User function to be called when the configured transition occurs.

Return values

  NRF_SUCCESS | If initialization was successful.
  NRF_ERROR_INVALID_STATE | If the driver is not initialized or the pin is already used.
  NRF_ERROR_NO_MEM | If no GPIOTE channel is available.

bool nrf_drv_gpiote_in_is_set | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for checking if a GPIOTE input pin is set.

Parameters

  [in] | pin | Pin.

Return values

  true | If the input pin is set.
  false | If the input pin is not set.

void nrf_drv_gpiote_in_uninit | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for uninitializing a GPIOTE input pin.

The driver frees the GPIOTE channel if the input pin was using one.

Parameters

  [in] | pin | Pin.

ret_code_t nrf_drv_gpiote_init | ( | void |  | ) |

Function for initializing the GPIOTE module.

Only static configuration is supported to prevent the shared resource being customized by the initiator.

Return values

  NRF_SUCCESS | If initialization was successful.
  NRF_ERROR_INVALID_STATE | If the driver was already initialized.

bool nrf_drv_gpiote_is_init | ( | void |  | ) |

Function for checking if the GPIOTE module is initialized.

The GPIOTE module is a shared module. Therefore, you should check if the module is already initialized and skip initialization if it is.

Return values

  true | If the module is already initialized.
  false | If the module is not initialized.

void nrf_drv_gpiote_out_clear | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for clearing a GPIOTE output pin.

Parameters

  [in] | pin | Pin.

ret_code_t nrf_drv_gpiote_out_init | ( | nrf_drv_gpiote_pin_t | pin,
|  | nrf_drv_gpiote_out_config_t const * | p_config
| ) |  |

Function for initializing a GPIOTE output pin.

The output pin can be controlled by the CPU or by PPI. The initial configuration specifies which mode is used. If PPI mode is used, the driver attempts to allocate one of the available GPIOTE channels. If no channel is available, an error is returned.

Parameters

  [in] | pin | Pin.
  [in] | p_config | Initial configuration.

Return values

  NRF_SUCCESS | If initialization was successful.
  NRF_ERROR_INVALID_STATE | If the driver is not initialized or the pin is already used.
  NRF_ERROR_NO_MEM | If no GPIOTE channel is available.

void nrf_drv_gpiote_out_set | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for setting a GPIOTE output pin.

Parameters

  [in] | pin | Pin.

uint32_t nrf_drv_gpiote_out_task_addr_get | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for getting the address of a configurable GPIOTE task.

Parameters

  [in] | pin | Pin.

Returns
  Address of OUT task.

void nrf_drv_gpiote_out_task_disable | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for disabling a GPIOTE output pin task.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_out_task_enable | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for enabling a GPIOTE output pin task.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_out_task_force | ( | nrf_drv_gpiote_pin_t | pin,
|  | uint8_t | state
| ) |  |

Function for forcing a specific state on the pin configured as task.

Parameters

  [in] | pin | Pin.
  [in] | state | Pin state.

void nrf_drv_gpiote_out_task_trigger | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for triggering the task OUT manually.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_out_toggle | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for toggling a GPIOTE output pin.

Parameters

  [in] | pin | Pin.

void nrf_drv_gpiote_out_uninit | ( | nrf_drv_gpiote_pin_t | pin | ) |

Function for uninitializing a GPIOTE output pin.

The driver frees the GPIOTE channel if the output pin was using one.

Parameters

  [in] | pin | Pin.