#define TEST_INPUT_PIN 7/* GPIO pin number mapped to PININT */ #define TEST_INPUT_PORT 0/* GPIO port number mapped to PININT */ #define TEST_INPUT_PIN_PORT 2 #define TEST_INPUT_PIN_BIT 7 #define TEST_INPUT_MODE_FUNC SCU_MODE_FUNC0 #define PININT_INDEX 4/* PININT index used for GPIO mapping */ #define PININT_NVIC_NAME PIN_INT4_IRQn/* GPIO interrupt NVIC interrupt name */ void GPIO4_IRQHandler(void) { Chip_PININT_ClearIntStatus(LPC_GPIO_PIN_INT, PININTCH(PININT_INDEX)); } int main() { Chip_SCU_PinMuxSet(TEST_INPUT_PIN_PORT, TEST_INPUT_PIN_BIT, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | TEST_INPUT_MODE_FUNC) ); /* Configure GPIO pin as input */ Chip_GPIO_SetPinDIRInput(LPC_GPIO_PORT, TEST_INPUT_PORT, TEST_INPUT_PIN); /* Configure interrupt channel for the GPIO pin in SysCon block */ Chip_SCU_GPIOIntPinSel(PININT_INDEX, TEST_INPUT_PORT, TEST_INPUT_PIN); /* Configure channel interrupt as edge sensitive and falling edge interrupt */ Chip_PININT_ClearIntStatus(LPC_GPIO_PIN_INT, PININTCH(PININT_INDEX)); Chip_PININT_SetPinModeEdge(LPC_GPIO_PIN_INT, PININTCH(PININT_INDEX)); Chip_PININT_EnableIntLow(LPC_GPIO_PIN_INT, PININTCH(PININT_INDEX)); /* Enable interrupt in the NVIC */ NVIC_ClearPendingIRQ(PININT_NVIC_NAME); NVIC_EnableIRQ(PININT_NVIC_NAME); while(1) { __no_operation(); } } |