nRF5 SDK v17.1.0
Modules | Data Structures | Macros | Typedefs | Functions
GPIOTE driver

GPIO Task Event (GPIOTE) peripheral driver. More...

Modules

 GPIOTE peripheral driver configuration
 

Data Structures

struct  nrfx_gpiote_in_config_t
 Input pin configuration. More...
 
struct  nrfx_gpiote_out_config_t
 Output pin configuration. More...
 

Macros

#define NRFX_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 NRFX_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 NRFX_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 NRFX_GPIOTE_RAW_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 NRFX_GPIOTE_RAW_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 NRFX_GPIOTE_RAW_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 NRFX_GPIOTE_CONFIG_OUT_SIMPLE(init_high)
 Macro for configuring a pin to use as output. GPIOTE is not used for the pin. More...
 
#define NRFX_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 NRFX_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 NRFX_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 nrfx_gpiote_pin_t
 Pin.
 
typedef void(* nrfx_gpiote_evt_handler_t )(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action)
 Pin event handler prototype. More...
 

Functions

nrfx_err_t nrfx_gpiote_init (void)
 Function for initializing the GPIOTE module. More...
 
bool nrfx_gpiote_is_init (void)
 Function for checking if the GPIOTE module is initialized. More...
 
void nrfx_gpiote_uninit (void)
 Function for uninitializing the GPIOTE module.
 
nrfx_err_t nrfx_gpiote_out_init (nrfx_gpiote_pin_t pin, nrfx_gpiote_out_config_t const *p_config)
 Function for initializing a GPIOTE output pin. More...
 
void nrfx_gpiote_out_uninit (nrfx_gpiote_pin_t pin)
 Function for uninitializing a GPIOTE output pin. More...
 
void nrfx_gpiote_out_set (nrfx_gpiote_pin_t pin)
 Function for setting a GPIOTE output pin. More...
 
void nrfx_gpiote_out_clear (nrfx_gpiote_pin_t pin)
 Function for clearing a GPIOTE output pin. More...
 
void nrfx_gpiote_out_toggle (nrfx_gpiote_pin_t pin)
 Function for toggling a GPIOTE output pin. More...
 
void nrfx_gpiote_out_task_enable (nrfx_gpiote_pin_t pin)
 Function for enabling a GPIOTE output pin task. More...
 
void nrfx_gpiote_out_task_disable (nrfx_gpiote_pin_t pin)
 Function for disabling a GPIOTE output pin task. More...
 
nrf_gpiote_tasks_t nrfx_gpiote_out_task_get (nrfx_gpiote_pin_t pin)
 Function for getting the OUT task for the specified output pin. More...
 
uint32_t nrfx_gpiote_out_task_addr_get (nrfx_gpiote_pin_t pin)
 Function for getting the address of the OUT task for the specified output pin. More...
 
nrf_gpiote_tasks_t nrfx_gpiote_set_task_get (nrfx_gpiote_pin_t pin)
 Function for getting the SET task for the specified output pin. More...
 
uint32_t nrfx_gpiote_set_task_addr_get (nrfx_gpiote_pin_t pin)
 Function for getting the address of the SET task for the specified output pin. More...
 
nrf_gpiote_tasks_t nrfx_gpiote_clr_task_get (nrfx_gpiote_pin_t pin)
 Function for getting the CLR task for the specified output pin. More...
 
uint32_t nrfx_gpiote_clr_task_addr_get (nrfx_gpiote_pin_t pin)
 Function for getting the address of the SET task for the specified output pin. More...
 
nrfx_err_t nrfx_gpiote_in_init (nrfx_gpiote_pin_t pin, nrfx_gpiote_in_config_t const *p_config, nrfx_gpiote_evt_handler_t evt_handler)
 Function for initializing a GPIOTE input pin. More...
 
void nrfx_gpiote_in_uninit (nrfx_gpiote_pin_t pin)
 Function for uninitializing a GPIOTE input pin. More...
 
void nrfx_gpiote_in_event_enable (nrfx_gpiote_pin_t pin, bool int_enable)
 Function for enabling sensing of a GPIOTE input pin. More...
 
void nrfx_gpiote_in_event_disable (nrfx_gpiote_pin_t pin)
 Function for disabling a GPIOTE input pin. More...
 
bool nrfx_gpiote_in_is_set (nrfx_gpiote_pin_t pin)
 Function for checking if a GPIOTE input pin is set. More...
 
nrf_gpiote_events_t nrfx_gpiote_in_event_get (nrfx_gpiote_pin_t pin)
 Function for getting the GPIOTE event for the specified input pin. More...
 
uint32_t nrfx_gpiote_in_event_addr_get (nrfx_gpiote_pin_t pin)
 Function for getting the address of a GPIOTE input pin event. More...
 
void nrfx_gpiote_out_task_force (nrfx_gpiote_pin_t pin, uint8_t state)
 Function for forcing a specific state on the pin configured as task. More...
 
void nrfx_gpiote_out_task_trigger (nrfx_gpiote_pin_t pin)
 Function for triggering the task OUT manually. More...
 
void nrfx_gpiote_set_task_trigger (nrfx_gpiote_pin_t pin)
 Function for triggering the task SET manually. More...
 
void nrfx_gpiote_clr_task_trigger (nrfx_gpiote_pin_t pin)
 Function for triggering the task CLR manually. More...
 

Detailed Description

GPIO Task Event (GPIOTE) peripheral driver.

Macro Definition Documentation

#define NRFX_GPIOTE_CONFIG_IN_SENSE_HITOLO (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = false, \
}

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 NRFX_GPIOTE_CONFIG_IN_SENSE_LOTOHI (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = false, \
}

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 NRFX_GPIOTE_CONFIG_IN_SENSE_TOGGLE (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = false, \
}

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 NRFX_GPIOTE_CONFIG_OUT_SIMPLE (   init_high)
Value:
{ \
.task_pin = false, \
}

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

#define NRFX_GPIOTE_CONFIG_OUT_TASK_HIGH
Value:
{ \
.task_pin = true, \
}

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 NRFX_GPIOTE_CONFIG_OUT_TASK_LOW
Value:
{ \
.task_pin = true, \
}

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 NRFX_GPIOTE_CONFIG_OUT_TASK_TOGGLE (   init_high)
Value:
{ \
.task_pin = true, \
}

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

The initial pin state must be provided.

#define NRFX_GPIOTE_RAW_CONFIG_IN_SENSE_HITOLO (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = true, \
}

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.

Note
This macro prepares configuration that skips the GPIO setup.
#define NRFX_GPIOTE_RAW_CONFIG_IN_SENSE_LOTOHI (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = true, \
}

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.

Note
This macro prepares configuration that skips the GPIO setup.
#define NRFX_GPIOTE_RAW_CONFIG_IN_SENSE_TOGGLE (   hi_accu)
Value:
{ \
.is_watcher = false, \
.hi_accuracy = hi_accu, \
.skip_gpio_setup = true, \
}

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.

Note
This macro prepares configuration that skips the GPIO setup.

Typedef Documentation

typedef void(* nrfx_gpiote_evt_handler_t)(nrfx_gpiote_pin_t pin, nrf_gpiote_polarity_t action)

Pin event handler prototype.

Parameters
[in]pinPin that triggered this event.
[in]actionAction that led to triggering this event.

Function Documentation

uint32_t nrfx_gpiote_clr_task_addr_get ( nrfx_gpiote_pin_t  pin)

Function for getting the address of the SET task for the specified output pin.

Parameters
[in]pinPin.
Returns
Address of CLR task.
nrf_gpiote_tasks_t nrfx_gpiote_clr_task_get ( nrfx_gpiote_pin_t  pin)

Function for getting the CLR task for the specified output pin.

The returned task identifier can be used within GPIOTE HAL, for example, to configure a DPPI channel.

Parameters
[in]pinPin.
Returns
CLR task associated with the specified output pin.
void nrfx_gpiote_clr_task_trigger ( nrfx_gpiote_pin_t  pin)

Function for triggering the task CLR manually.

Parameters
[in]pinPin.
uint32_t nrfx_gpiote_in_event_addr_get ( nrfx_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]pinPin.
Returns
Address of the specified input pin event.
void nrfx_gpiote_in_event_disable ( nrfx_gpiote_pin_t  pin)

Function for disabling a GPIOTE input pin.

Parameters
[in]pinPin.
void nrfx_gpiote_in_event_enable ( nrfx_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. The PORT event is shared between multiple pins, therefore the interrupt is always enabled.

Parameters
[in]pinPin.
[in]int_enableTrue to enable the interrupt. Always valid for a high-accuracy pin.
nrf_gpiote_events_t nrfx_gpiote_in_event_get ( nrfx_gpiote_pin_t  pin)

Function for getting the GPIOTE event for the specified input pin.

The returned event identifier can be used within GPIOTE HAL, for example, to configure a DPPI channel. If the pin is configured to use low-accuracy mode, the PORT event is returned.

Parameters
[in]pinPin.
Returns
Event associated with the specified input pin.
nrfx_err_t nrfx_gpiote_in_init ( nrfx_gpiote_pin_t  pin,
nrfx_gpiote_in_config_t const *  p_config,
nrfx_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]pinPin.
[in]p_configInitial configuration.
[in]evt_handlerUser function to be called when the configured transition occurs.
Return values
NRFX_SUCCESSInitialization was successful.
NRFX_ERROR_INVALID_STATEThe driver is not initialized or the pin is already used.
NRFX_ERROR_NO_MEMNo GPIOTE channel is available.
bool nrfx_gpiote_in_is_set ( nrfx_gpiote_pin_t  pin)

Function for checking if a GPIOTE input pin is set.

Parameters
[in]pinPin.
Return values
trueThe input pin is set.
falseThe input pin is not set.
void nrfx_gpiote_in_uninit ( nrfx_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]pinPin.
nrfx_err_t nrfx_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
NRFX_SUCCESSInitialization was successful.
NRFX_ERROR_INVALID_STATEThe driver was already initialized.
bool nrfx_gpiote_is_init ( void  )

Function for checking if the GPIOTE module is initialized.

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

Return values
trueThe module is already initialized.
falseThe module is not initialized.
void nrfx_gpiote_out_clear ( nrfx_gpiote_pin_t  pin)

Function for clearing a GPIOTE output pin.

Parameters
[in]pinPin.
nrfx_err_t nrfx_gpiote_out_init ( nrfx_gpiote_pin_t  pin,
nrfx_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]pinPin.
[in]p_configInitial configuration.
Return values
NRFX_SUCCESSInitialization was successful.
NRFX_ERROR_INVALID_STATEThe driver is not initialized or the pin is already used.
NRFX_ERROR_NO_MEMNo GPIOTE channel is available.
void nrfx_gpiote_out_set ( nrfx_gpiote_pin_t  pin)

Function for setting a GPIOTE output pin.

Parameters
[in]pinPin.
uint32_t nrfx_gpiote_out_task_addr_get ( nrfx_gpiote_pin_t  pin)

Function for getting the address of the OUT task for the specified output pin.

Parameters
[in]pinPin.
Returns
Address of OUT task.
void nrfx_gpiote_out_task_disable ( nrfx_gpiote_pin_t  pin)

Function for disabling a GPIOTE output pin task.

Parameters
[in]pinPin.
void nrfx_gpiote_out_task_enable ( nrfx_gpiote_pin_t  pin)

Function for enabling a GPIOTE output pin task.

Parameters
[in]pinPin.
void nrfx_gpiote_out_task_force ( nrfx_gpiote_pin_t  pin,
uint8_t  state 
)

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

Parameters
[in]pinPin.
[in]statePin state.
nrf_gpiote_tasks_t nrfx_gpiote_out_task_get ( nrfx_gpiote_pin_t  pin)

Function for getting the OUT task for the specified output pin.

The returned task identifier can be used within GPIOTE HAL, for example, to configure a DPPI channel.

Parameters
[in]pinPin.
Returns
OUT task associated with the specified output pin.
void nrfx_gpiote_out_task_trigger ( nrfx_gpiote_pin_t  pin)

Function for triggering the task OUT manually.

Parameters
[in]pinPin.
void nrfx_gpiote_out_toggle ( nrfx_gpiote_pin_t  pin)

Function for toggling a GPIOTE output pin.

Parameters
[in]pinPin.
void nrfx_gpiote_out_uninit ( nrfx_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]pinPin.
uint32_t nrfx_gpiote_set_task_addr_get ( nrfx_gpiote_pin_t  pin)

Function for getting the address of the SET task for the specified output pin.

Parameters
[in]pinPin.
Returns
Address of SET task.
nrf_gpiote_tasks_t nrfx_gpiote_set_task_get ( nrfx_gpiote_pin_t  pin)

Function for getting the SET task for the specified output pin.

The returned task identifier can be used within GPIOTE HAL, for example, to configure a DPPI channel.

Parameters
[in]pinPin.
Returns
SET task associated with the specified output pin.
void nrfx_gpiote_set_task_trigger ( nrfx_gpiote_pin_t  pin)

Function for triggering the task SET manually.

Parameters
[in]pinPin.

Documentation feedback | Developer Zone | Subscribe | Updated