yefj
Advanced Member level 5
Hello, i have the following example bellow shown bellow,it uses these two lines.
where we enable the interrupts using GPIO_EVEN_IRQn 16+10 and GPIO_ODD_IRQn 16+18
NVIC_EnableIRQ(GPIO_EVEN_IRQn)
NVIC_EnableIRQ(GPIO_ODD_IRQn)
Also they have created special event handler function for this special case.
i want to enable interrupt only for PF7(not even or odd) and write an event handler for it.
How do i know whar 16+X number to use for this case?
How to write properly the event handler name?
Thanks.
datasheet:
https://www.silabs.com/documents/public/data-sheets/efr32fg14-datasheet.pdf
user guide:
https://www.silabs.com/documents/public/user-guides/ug318-brd4257b-user-guide.pdf
code example link:
https://github.com/SiliconLabs/peri...ries1/gpio/switch_led_interrupt/src/main_s1.c
where we enable the interrupts using GPIO_EVEN_IRQn 16+10 and GPIO_ODD_IRQn 16+18
NVIC_EnableIRQ(GPIO_EVEN_IRQn)
NVIC_EnableIRQ(GPIO_ODD_IRQn)
Also they have created special event handler function for this special case.
i want to enable interrupt only for PF7(not even or odd) and write an event handler for it.
How do i know whar 16+X number to use for this case?
How to write properly the event handler name?
Thanks.
datasheet:
https://www.silabs.com/documents/public/data-sheets/efr32fg14-datasheet.pdf
user guide:
https://www.silabs.com/documents/public/user-guides/ug318-brd4257b-user-guide.pdf
code example link:
https://github.com/SiliconLabs/peri...ries1/gpio/switch_led_interrupt/src/main_s1.c
Code:
#include "em_device.h"
#include "em_chip.h"
#include "em_cmu.h"
#include "em_emu.h"
#include "em_gpio.h"
#include "bsp.h"
/**************************************************************************//**
* @brief GPIO Even IRQ for pushbuttons on even-numbered pins
*****************************************************************************/
void GPIO_EVEN_IRQHandler(void)
{
// Clear all even pin interrupt flags
GPIO_IntClear(0x5555);
// Toggle LED0
GPIO_PinOutToggle(BSP_GPIO_LED0_PORT, BSP_GPIO_LED0_PIN);
}
/**************************************************************************//**
* @brief GPIO Odd IRQ for pushbuttons on odd-numbered pins
*****************************************************************************/
void GPIO_ODD_IRQHandler(void)
{
// Clear all odd pin interrupt flags
GPIO_IntClear(0xAAAA);
// Toggle LED01
GPIO_PinOutToggle(BSP_GPIO_LED1_PORT, BSP_GPIO_LED1_PIN);
}
/**************************************************************************//**
* @brief GPIO initialization
*****************************************************************************/
void initGPIO(void)
{
// Enable GPIO clock
CMU_ClockEnable(cmuClock_GPIO, true);
// Configure PB0 and PB1 as input with glitch filter enabled
GPIO_PinModeSet(BSP_GPIO_PB0_PORT, BSP_GPIO_PB0_PIN, gpioModeInputPullFilter, 1);
GPIO_PinModeSet(BSP_GPIO_PB1_PORT, BSP_GPIO_PB1_PIN, gpioModeInputPullFilter, 1);
// Configure LED0 and LED1 as output
GPIO_PinModeSet(BSP_GPIO_LED0_PORT, BSP_GPIO_LED0_PIN, gpioModePushPull, 0);
GPIO_PinModeSet(BSP_GPIO_LED1_PORT, BSP_GPIO_LED1_PIN, gpioModePushPull, 0);
// Enable IRQ for even numbered GPIO pins
NVIC_EnableIRQ(GPIO_EVEN_IRQn);
// Enable IRQ for odd numbered GPIO pins
NVIC_EnableIRQ(GPIO_ODD_IRQn);
// Enable falling-edge interrupts for PB pins
GPIO_ExtIntConfig(BSP_GPIO_PB0_PORT, BSP_GPIO_PB0_PIN,BSP_GPIO_PB0_PIN, 0, 1, true);
GPIO_ExtIntConfig(BSP_GPIO_PB1_PORT, BSP_GPIO_PB1_PIN, BSP_GPIO_PB1_PIN, 0, 1, true);
}
/**************************************************************************//**
* @brief Main function
*****************************************************************************/
int main(void)
{
// Chip errata
CHIP_Init();
// Initializations
initGPIO();
while (1){
// Enter Low Energy Mode until an interrupt occurs
EMU_EnterEM3(false);
}
}