A simple example that uses the GPIO group and pin interrupts. LED1 turns on when P21 and P22 are grounded (using group 0 interrupt) LED1 turns of when P23 or P24 are grounded (using group 1 interrupt) LED2 turns on when P19 is grounded (using GPIO interrupt 0) LED2 turns off when P18 is grounded (using GPIO interrupt 1)

Dependencies:   mbed

Committer:
alexan_e
Date:
Thu May 24 15:25:54 2012 +0000
Revision:
2:7c8d0f7dd79f
Parent:
1:566ac56c130e
Changed interrupt priority comment, the CortexM0 has four levels 0-3.
Moved the SetPriority function before the interrupt enable. In CortexM0 the priority shouldnt be changed while the interrupt is enabled

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alexan_e 0:03be1abca74e 1 /************************************************************************************
alexan_e 0:03be1abca74e 2 Code created using the ARMwizard, visit http://alexan.edaboard.eu
alexan_e 0:03be1abca74e 3 ************************************************************************************/
alexan_e 1:566ac56c130e 4 /*
alexan_e 1:566ac56c130e 5 #include <LPC11Uxx.h>
alexan_e 1:566ac56c130e 6 */
alexan_e 0:03be1abca74e 7
alexan_e 1:566ac56c130e 8 #include "mbed.h"
alexan_e 1:566ac56c130e 9
alexan_e 1:566ac56c130e 10 #define LED1 1UL<<8
alexan_e 1:566ac56c130e 11 #define LED2 1UL<<9
alexan_e 1:566ac56c130e 12 #define LED3 1UL<<10
alexan_e 1:566ac56c130e 13 #define LED4 1UL<<11
alexan_e 0:03be1abca74e 14
alexan_e 0:03be1abca74e 15
alexan_e 0:03be1abca74e 16 /******************************************************************************
alexan_e 0:03be1abca74e 17 GPIO group 0 interrupt service function
alexan_e 0:03be1abca74e 18 ******************************************************************************/
alexan_e 1:566ac56c130e 19 extern "C" void GINT0_IRQHandler(void) {
alexan_e 0:03be1abca74e 20 /* write code here */
alexan_e 1:566ac56c130e 21 LPC_GPIO->SET[1] = LED1;
alexan_e 0:03be1abca74e 22
alexan_e 0:03be1abca74e 23 LPC_GPIO_GROUP_INT0->CTRL |= (1UL<<0); /* Clear pin group 0 interrupt flag */
alexan_e 0:03be1abca74e 24 }
alexan_e 0:03be1abca74e 25
alexan_e 0:03be1abca74e 26 /******************************************************************************
alexan_e 0:03be1abca74e 27 GPIO group 1 interrupt service function
alexan_e 0:03be1abca74e 28 ******************************************************************************/
alexan_e 1:566ac56c130e 29 extern "C" void GINT1_IRQHandler(void) {
alexan_e 0:03be1abca74e 30 /* write code here */
alexan_e 1:566ac56c130e 31 LPC_GPIO->CLR[1] = LED1;
alexan_e 0:03be1abca74e 32
alexan_e 0:03be1abca74e 33 LPC_GPIO_GROUP_INT1->CTRL |= (1UL<<0); /* Clear pin group 1 interrupt flag */
alexan_e 0:03be1abca74e 34 }
alexan_e 0:03be1abca74e 35
alexan_e 0:03be1abca74e 36 /******************************************************************************
alexan_e 0:03be1abca74e 37 GPIO pin interrupt 0 service function
alexan_e 0:03be1abca74e 38 ******************************************************************************/
alexan_e 1:566ac56c130e 39 extern "C" void FLEX_INT0_IRQHandler(void) {
alexan_e 0:03be1abca74e 40 /* write code here */
alexan_e 1:566ac56c130e 41 LPC_GPIO->SET[1] = LED2;
alexan_e 0:03be1abca74e 42
alexan_e 0:03be1abca74e 43 /* The following clears the pin interrupt flag when set to EDGE mode, if the pin is set the LEVEL sense then remove the line */
alexan_e 0:03be1abca74e 44 //LPC_GPIO_PIN_INT->IST = (1UL<<0); /* Clear RISING/FALLING EDGE interrupt flag */
alexan_e 0:03be1abca74e 45 }
alexan_e 0:03be1abca74e 46
alexan_e 0:03be1abca74e 47 /******************************************************************************
alexan_e 0:03be1abca74e 48 GPIO pin interrupt 1 service function
alexan_e 0:03be1abca74e 49 ******************************************************************************/
alexan_e 1:566ac56c130e 50 extern "C" void FLEX_INT1_IRQHandler(void) {
alexan_e 0:03be1abca74e 51 /* write code here */
alexan_e 1:566ac56c130e 52 LPC_GPIO->CLR[1] = LED2;
alexan_e 0:03be1abca74e 53
alexan_e 0:03be1abca74e 54 /* The foillowing clears the pin interrupt flag when set to EDGE mode, if the pin is set the LEVEL sence then remove the line */
alexan_e 0:03be1abca74e 55 //LPC_GPIO_PIN_INT->IST = (1UL<<1); /* Clear RISING/FALLING EDGE interrupt flag */
alexan_e 0:03be1abca74e 56 }
alexan_e 0:03be1abca74e 57
alexan_e 0:03be1abca74e 58 int main(void)
alexan_e 0:03be1abca74e 59 {
alexan_e 0:03be1abca74e 60 /*
alexan_e 0:03be1abca74e 61 P0.0: RESET (External reset input with 20 ns glitch filter), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 62 P0.1: PORT0.1 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 63 P0.2: PORT0.2 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 64 P0.3: PORT0.3 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 65 P0.4: PORT0.4 (General purpose I/O) Input, I2CMODE: Standard mode/ Fast-mode I2C
alexan_e 0:03be1abca74e 66 P0.5: PORT0.5 (General purpose I/O) Input, I2CMODE: Standard mode/ Fast-mode I2C
alexan_e 0:03be1abca74e 67 P0.6: PORT0.6 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 68 P0.7: PORT0.7 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 69 P0.8: PORT0.8 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 70 P0.9: PORT0.9 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 71 P0.10: SWCLK (Serial wire clock), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 72 P0.11: TDI (Test Data In for JTAG interface), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 73 P0.12: TMS (Test Mode Select for JTAG interface), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 74 P0.13: TDO (Test Data Out for JTAG interface), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 75 P0.14: TRST (Test Reset for JTAG interface), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 76 P0.15: SWDIO (Serial wire debug input/output), pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 77 P0.16: PORT0.16 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 78 P0.17: PORT0.17 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 79 P0.18: PORT0.18 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 80 P0.19: PORT0.19 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 81 P0.20: PORT0.20 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 82 P0.21: PORT0.21 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 83 P0.22: PORT0.22 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 84 P0.23: PORT0.23 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Digital mode, Open Drain disabled
alexan_e 0:03be1abca74e 85 P1.0: PORT1.0 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 86 P1.1: PORT1.1 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 87 P1.2: PORT1.2 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 88 P1.3: PORT1.3 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 89 P1.4: PORT1.4 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 90 P1.5: PORT1.5 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 91 P1.6: PORT1.6 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 92 P1.7: PORT1.7 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 93 P1.8: PORT1.8 (General purpose I/O) Output, neither pull-up nor pull-down, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 94 P1.9: PORT1.9 (General purpose I/O) Output, neither pull-up nor pull-down, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 95 P1.10: PORT1.10 (General purpose I/O) Output, neither pull-up nor pull-down, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 96 P1.11: PORT1.11 (General purpose I/O) Output, neither pull-up nor pull-down, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 97 P1.12: PORT1.12 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 98 P1.13: PORT1.13 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 99 P1.14: PORT1.14 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 100 P1.15: PORT1.15 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 101 P1.16: PORT1.16 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 102 P1.17: PORT1.17 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 103 P1.18: PORT1.18 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 104 P1.19: PORT1.19 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 105 P1.20: PORT1.20 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 106 P1.21: PORT1.21 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 107 P1.22: PORT1.22 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 108 P1.23: PORT1.23 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 109 P1.24: PORT1.24 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 110 P1.25: PORT1.25 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 111 P1.26: PORT1.26 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 112 P1.27: PORT1.27 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 113 P1.28: PORT1.28 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 114 P1.29: PORT1.29 (General purpose I/O) Input, pull-up resistor enabled, Hysteresis disabled, Input not inverted, Open Drain disabled
alexan_e 0:03be1abca74e 115 */
alexan_e 0:03be1abca74e 116
alexan_e 0:03be1abca74e 117 LPC_SYSCON->SYSAHBCLKDIV = 0x01; /* set AHB clock divider to 1/1 */
alexan_e 0:03be1abca74e 118 LPC_SYSCON->SYSAHBCLKCTRL = (LPC_SYSCON->SYSAHBCLKCTRL & 0x098DFFFF) | (1UL<<6); /* enable clock for GPIO (default is disabled)*/
alexan_e 0:03be1abca74e 119 LPC_SYSCON->SYSAHBCLKCTRL = (LPC_SYSCON->SYSAHBCLKCTRL & 0x098DFFFF) | (1UL<<16); /* enable clock for IOCON (default is disabled)*/
alexan_e 0:03be1abca74e 120
alexan_e 0:03be1abca74e 121 LPC_IOCON->RESET_PIO0_0 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 122 LPC_IOCON->PIO0_1 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 123 LPC_IOCON->PIO0_2 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 124 LPC_IOCON->PIO0_3 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 125 LPC_IOCON->PIO0_4 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 126 LPC_IOCON->PIO0_5 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 127 LPC_IOCON->PIO0_6 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 128 LPC_IOCON->PIO0_7 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 129 LPC_IOCON->PIO0_8 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 130 LPC_IOCON->PIO0_9 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 131 LPC_IOCON->SWCLK_PIO0_10 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 132 LPC_IOCON->TDI_PIO0_11 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 133 LPC_IOCON->TMS_PIO0_12 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 134 LPC_IOCON->TDO_PIO0_13 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 135 LPC_IOCON->TRST_PIO0_14 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 136 LPC_IOCON->SWDIO_PIO0_15 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 137 LPC_IOCON->PIO0_16 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 138 LPC_IOCON->PIO0_17 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 139 LPC_IOCON->PIO0_18 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 140 LPC_IOCON->PIO0_19 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 141 LPC_IOCON->PIO0_20 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 142 LPC_IOCON->PIO0_21 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 143 LPC_IOCON->PIO0_22 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 144 LPC_IOCON->PIO0_23 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 145 LPC_IOCON->PIO1_0 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 146 LPC_IOCON->PIO1_1 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 147 LPC_IOCON->PIO1_2 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 148 LPC_IOCON->PIO1_3 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 149 LPC_IOCON->PIO1_4 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 150 LPC_IOCON->PIO1_5 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 151 LPC_IOCON->PIO1_6 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 152 LPC_IOCON->PIO1_7 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 153 LPC_IOCON->PIO1_8 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 154 LPC_IOCON->PIO1_9 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 155 LPC_IOCON->PIO1_10 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 156 LPC_IOCON->PIO1_11 = 0x00000080; /* binary: 00000000_00000000_00000000_10000000 */
alexan_e 0:03be1abca74e 157 LPC_IOCON->PIO1_12 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 158 LPC_IOCON->PIO1_13 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 159 LPC_IOCON->PIO1_14 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 160 LPC_IOCON->PIO1_15 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 161 LPC_IOCON->PIO1_16 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 162 LPC_IOCON->PIO1_17 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 163 LPC_IOCON->PIO1_18 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 164 LPC_IOCON->PIO1_19 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 165 LPC_IOCON->PIO1_20 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 166 LPC_IOCON->PIO1_21 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 167 LPC_IOCON->PIO1_22 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 168 LPC_IOCON->PIO1_23 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 169 LPC_IOCON->PIO1_24 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 170 LPC_IOCON->PIO1_25 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 171 LPC_IOCON->PIO1_26 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 172 LPC_IOCON->PIO1_27 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 173 LPC_IOCON->PIO1_28 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 174 LPC_IOCON->PIO1_29 = 0x00000090; /* binary: 00000000_00000000_00000000_10010000 */
alexan_e 0:03be1abca74e 175
alexan_e 0:03be1abca74e 176 LPC_GPIO->DIR[0] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 177 LPC_GPIO->DIR[1] = 0x00000F00; /* binary: 00000000_00000000_00001111_00000000 */
alexan_e 0:03be1abca74e 178
alexan_e 0:03be1abca74e 179 /******************************************************************************
alexan_e 0:03be1abca74e 180 GPIO pin interrupts
alexan_e 0:03be1abca74e 181 *******************************************************************************
alexan_e 0:03be1abca74e 182 GPIO pin interrupt 0 set for: P0.16 triggered with LOW LEVEL
alexan_e 0:03be1abca74e 183 GPIO pin interrupt 1 set for: P0.22 triggered with LOW LEVEL
alexan_e 0:03be1abca74e 184 */
alexan_e 0:03be1abca74e 185
alexan_e 0:03be1abca74e 186 LPC_SYSCON->SYSAHBCLKCTRL = (LPC_SYSCON->SYSAHBCLKCTRL & 0x098DFFFF) | (1UL<<19); /* enable clock for GPIO pin interrupt (default is disabled)*/
alexan_e 0:03be1abca74e 187
alexan_e 0:03be1abca74e 188 LPC_GPIO_PIN_INT->ISEL = 0x00000003; /* binary: 00000000_00000000_00000000_00000011 */
alexan_e 0:03be1abca74e 189 LPC_GPIO_PIN_INT->IENR = 0x00000003; /* binary: 00000000_00000000_00000000_00000011 */
alexan_e 0:03be1abca74e 190 LPC_GPIO_PIN_INT->IENF = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 191
alexan_e 0:03be1abca74e 192 LPC_SYSCON->PINTSEL[0] = 0x00000010; /* binary: 00000000_00000000_00000000_00010000 */
alexan_e 0:03be1abca74e 193 LPC_SYSCON->PINTSEL[1] = 0x00000016; /* binary: 00000000_00000000_00000000_00010110 */
alexan_e 0:03be1abca74e 194
alexan_e 0:03be1abca74e 195 /******************************************************************************
alexan_e 0:03be1abca74e 196 GPIO group 0 interrupt
alexan_e 0:03be1abca74e 197 *******************************************************************************
alexan_e 0:03be1abca74e 198 The following pins are combined with the AND operator
alexan_e 0:03be1abca74e 199 P0.7 set for Low Level
alexan_e 0:03be1abca74e 200 P0.17 set for Low Level
alexan_e 0:03be1abca74e 201 */
alexan_e 0:03be1abca74e 202
alexan_e 0:03be1abca74e 203 LPC_SYSCON->SYSAHBCLKCTRL = (LPC_SYSCON->SYSAHBCLKCTRL & 0x098DFFFF) | (1UL<<23); /* enable clock for GPIO GROUP0 interrupt (default is disabled)*/
alexan_e 0:03be1abca74e 204
alexan_e 0:03be1abca74e 205 LPC_GPIO_GROUP_INT0->PORT_POL[0] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 206 LPC_GPIO_GROUP_INT0->PORT_POL[1] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 207 LPC_GPIO_GROUP_INT0->PORT_ENA[0] = 0x00020080; /* binary: 00000000_00000010_00000000_10000000 */
alexan_e 0:03be1abca74e 208 LPC_GPIO_GROUP_INT0->PORT_ENA[1] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 209 LPC_GPIO_GROUP_INT0->CTRL = 0x00000006; /* binary: 00000000_00000000_00000000_00000110 */
alexan_e 0:03be1abca74e 210
alexan_e 0:03be1abca74e 211 /******************************************************************************
alexan_e 0:03be1abca74e 212 GPIO group 1 interrupt
alexan_e 0:03be1abca74e 213 *******************************************************************************
alexan_e 0:03be1abca74e 214 The following pins are combined with the OR operator
alexan_e 0:03be1abca74e 215 P1.17 set for Low Level
alexan_e 0:03be1abca74e 216 P1.18 set for Low Level
alexan_e 0:03be1abca74e 217 */
alexan_e 0:03be1abca74e 218
alexan_e 0:03be1abca74e 219 LPC_SYSCON->SYSAHBCLKCTRL = (LPC_SYSCON->SYSAHBCLKCTRL & 0x098DFFFF) | (1UL<<24); /* enable clock for GPIO GROUP1 interrupt (default is disabled)*/
alexan_e 0:03be1abca74e 220
alexan_e 0:03be1abca74e 221 LPC_GPIO_GROUP_INT1->PORT_POL[0] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 222 LPC_GPIO_GROUP_INT1->PORT_POL[1] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 223 LPC_GPIO_GROUP_INT1->PORT_ENA[0] = 0x00000000; /* binary: 00000000_00000000_00000000_00000000 */
alexan_e 0:03be1abca74e 224 LPC_GPIO_GROUP_INT1->PORT_ENA[1] = 0x00060000; /* binary: 00000000_00000110_00000000_00000000 */
alexan_e 0:03be1abca74e 225 LPC_GPIO_GROUP_INT1->CTRL = 0x00000004; /* binary: 00000000_00000000_00000000_00000100 */
alexan_e 0:03be1abca74e 226
alexan_e 0:03be1abca74e 227 /******************************************************************************
alexan_e 0:03be1abca74e 228 Vectored Interrupt initialization
alexan_e 0:03be1abca74e 229 ******************************************************************************/
alexan_e 0:03be1abca74e 230
alexan_e 2:7c8d0f7dd79f 231 NVIC_SetPriority(GINT0_IRQn,0); /* Default priority group 0, can be 0(highest) - 3(lowest) */
alexan_e 0:03be1abca74e 232 NVIC_EnableIRQ(GINT0_IRQn); /* Enable GPIO group 0 interrupt */
alexan_e 0:03be1abca74e 233
alexan_e 2:7c8d0f7dd79f 234 NVIC_SetPriority(GINT1_IRQn,0); /* Default priority group 0, can be 0(highest) - 3(lowest) */
alexan_e 2:7c8d0f7dd79f 235 NVIC_EnableIRQ(GINT1_IRQn); /* Enable GPIO group 1 interrupt */
alexan_e 2:7c8d0f7dd79f 236
alexan_e 2:7c8d0f7dd79f 237 NVIC_SetPriority(FLEX_INT0_IRQn,0); /* Default priority group 0, can be 0(highest) - 3(lowest) */
alexan_e 0:03be1abca74e 238 NVIC_EnableIRQ(FLEX_INT0_IRQn); /* Enable GPIO pin interrupt 0 */
alexan_e 2:7c8d0f7dd79f 239
alexan_e 2:7c8d0f7dd79f 240 NVIC_SetPriority(FLEX_INT1_IRQn,0); /* Default priority group 0, can be 0(highest) - 3(lowest) */
alexan_e 0:03be1abca74e 241 NVIC_EnableIRQ(FLEX_INT1_IRQn); /* Enable GPIO pin interrupt 1 */
alexan_e 2:7c8d0f7dd79f 242
alexan_e 0:03be1abca74e 243 while(1)
alexan_e 0:03be1abca74e 244 {
alexan_e 0:03be1abca74e 245
alexan_e 0:03be1abca74e 246
alexan_e 0:03be1abca74e 247 }
alexan_e 0:03be1abca74e 248
alexan_e 0:03be1abca74e 249 }