nRF5 SDK v13.0.0
Modules | Data Structures | Macros | Typedefs | Functions

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, \
}

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, \
}

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, \
}

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:
{ \
.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:
{ \
.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 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 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.

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
pinPin that triggered this event.
actionAction 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]pinPin.
void nrf_drv_gpiote_in_event_disable ( nrf_drv_gpiote_pin_t  pin)

Function for disabling a GPIOTE input pin.

Parameters
[in]pinPin.
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]pinPin.
[in]int_enableTrue 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]pinPin.
[in]p_configInitial configuration.
[in]evt_handlerUser function to be called when the configured transition occurs.
Return values
NRF_SUCCESSIf initialization was successful.
NRF_ERROR_INVALID_STATEIf the driver is not initialized or the pin is already used.
NRF_ERROR_NO_MEMIf 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]pinPin.
Return values
trueIf the input pin is set.
falseIf 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]pinPin.
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_SUCCESSIf initialization was successful.
NRF_ERROR_INVALID_STATEIf 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
trueIf the module is already initialized.
falseIf 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]pinPin.
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]pinPin.
[in]p_configInitial configuration.
Return values
NRF_SUCCESSIf initialization was successful.
NRF_ERROR_INVALID_STATEIf the driver is not initialized or the pin is already used.
NRF_ERROR_NO_MEMIf 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]pinPin.
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]pinPin.
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]pinPin.
void nrf_drv_gpiote_out_task_enable ( nrf_drv_gpiote_pin_t  pin)

Function for enabling a GPIOTE output pin task.

Parameters
[in]pinPin.
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]pinPin.
[in]statePin state.
void nrf_drv_gpiote_out_task_trigger ( nrf_drv_gpiote_pin_t  pin)

Function for triggering the task OUT manually.

Parameters
[in]pinPin.
void nrf_drv_gpiote_out_toggle ( nrf_drv_gpiote_pin_t  pin)

Function for toggling a GPIOTE output pin.

Parameters
[in]pinPin.
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]pinPin.

Documentation feedback | Developer Zone | Subscribe | Updated