EFM32 Pearl Gecko Software Documentation
efm32pg1-doc-4.2.1
|
GPIOINT General Purpose Input/Output Interrupt dispatcher, see GPIOINT General Purpose Input/Output Interrupt dispatcher page for detailed documentation.
. More...
Typedefs | |
typedef void(* | GPIOINT_IrqCallbackPtr_t) (uint8_t pin) |
GPIO interrupt callback function pointer. More... | |
Functions | |
void | GPIOINT_Init (void) |
Initialization of GPIOINT module. | |
void | GPIOINT_CallbackRegister (uint8_t pin, GPIOINT_IrqCallbackPtr_t callbackPtr) |
Registers user callback for given pin number. More... | |
static __INLINE void | GPIOINT_CallbackUnRegister (uint8_t pin) |
Unregisters user callback for given pin number. More... | |
EFM32/EZR32/EFR32 has two GPIO interrupts lines, Odd and Even. If more than two interrupts are used then interrupt routine must dispatch from a callback register. This module provides small dispatcher for both GPIO interrupts enabling handling of up to 16 GPIO pin interrupts.
It is up to the user to configure and enable interrupt on given pin. This can be done using the GPIO library (emlib). This module handles the dispatch register and clearing of interrupt flags.
In order to use this dispatcher, it has to be initialized first by calling GPIOINT_Init(). Then each pin must be configured by first registering the callback function for given pin and then configure and enabling the interrupt in GPIO module.
This section contain brief descriptions of the functions in the API. You will find detailed information on parameters by clicking on the hyperlinked function names.
Your application code must include one header file: gpiointerrupt.h.
GPIOINT_Init()
This functions initializes the dispatcher register. Typically GPIOINT_Init() is called once in your startup code.
GPIOINT_CallbackRegister()
Register a callback function on a pin number.
GPIOINT_CallbackUnRegister()
Un-register a callback function on a pin number.
#include "em_gpio.h" #include "em_int.h" #include "gpiointerrupt.h" int main(void) { CHIP_Init(); // Enable clock for GPIO module, initialize GPIOINT CMU_ClockEnable(cmuClock_GPIO, true); GPIOINT_Init(); // Register callback functions and enable interrupts GPIOINT_CallbackRegister(1, gpioCallback1); GPIOINT_CallbackRegister(3, gpioCallback3); GPIOINT_CallbackRegister(8, gpioCallback8); GPIO_IntEnable(1<<1 | 1<<3 | 1<<8); while(true); }
typedef void(* GPIOINT_IrqCallbackPtr_t) (uint8_t pin) |
Parameters:
Definition at line 49 of file gpiointerrupt.h.
void GPIOINT_CallbackRegister | ( | uint8_t | pin, |
GPIOINT_IrqCallbackPtr_t | callbackPtr | ||
) |
Use this function to register a callback which shall be called upon interrupt generated from given pin number (port is irrelevant). Interrupt itself must be configured externally. Function overwrites previously registered callback.
[in] | pin | Pin number for the callback. |
[in] | callbackPtr | A pointer to callback function. |
Definition at line 91 of file gpiointerrupt.c.
References INT_Disable(), and INT_Enable().
Referenced by ezradio_hal_GpioInit(), GPIOINT_CallbackUnRegister(), UARTDRV_DeInit(), and UARTDRV_Init().
|
static |
Use this function to unregister a callback.
[in] | pin | Pin number for the callback. |
Definition at line 69 of file gpiointerrupt.h.
References GPIOINT_CallbackRegister().