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)
main.cpp@2:7c8d0f7dd79f, 2012-05-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |