void PORTC_IRQHandler(void) { if (GPIO_ReadPinInput(NXPNCI_IRQ_GPIO, NXPNCI_IRQ_PIN) == 1) { BaseType_t xHigherPriorityTaskWoken = pdFALSE; GPIO_ClearPinsInterruptFlags(NXPNCI_IRQ_GPIO, 1U << NXPNCI_IRQ_PIN); xSemaphoreGiveFromISR(IrqSem, &xHigherPriorityTaskWoken); } }
/*! * @brief Interrupt service fuction of switch. * * This function toggles the LED */ void BOARD_SW_IRQ_HANDLER(void) { /* Clear external interrupt flag. */ GPIO_ClearPinsInterruptFlags(BOARD_SW_GPIO, 1U << BOARD_SW_GPIO_PIN); /* Change state of button. */ g_ButtonPress = true; /* Toggle LED. */ GPIO_TogglePinsOutput(BOARD_LED_GPIO, 1U << BOARD_LED_GPIO_PIN); }
static void mcux_igpio_port_isr(void *arg) { struct device *dev = (struct device *)arg; const struct mcux_igpio_config *config = dev->config->config_info; struct mcux_igpio_data *data = dev->driver_data; u32_t enabled_int, int_flags; int_flags = GPIO_PortGetInterruptFlags(config->base); enabled_int = int_flags & data->pin_callback_enables; gpio_fire_callbacks(&data->callbacks, dev, enabled_int); GPIO_ClearPinsInterruptFlags(config->base, enabled_int); }