]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_M0_LPC1114_LPCXpresso/CMSISv2p00_LPC11xx/inc/LPC11xx.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_M0_LPC1114_LPCXpresso / CMSISv2p00_LPC11xx / inc / LPC11xx.h
1 /****************************************************************************\r
2  *   $Id:: LPC11xx.h 8860 2011-12-22 23:12:34Z usb00175                     $\r
3  *   Project: NXP LPC11xx software example  \r
4  *\r
5  *   Description:\r
6  *     CMSIS Cortex-M0 Core Peripheral Access Layer Header File for \r
7  *     NXP LPC11xx Device Series \r
8  *\r
9  ****************************************************************************\r
10  * Software that is described herein is for illustrative purposes only\r
11  * which provides customers with programming information regarding the\r
12  * products. This software is supplied "AS IS" without any warranties.\r
13  * NXP Semiconductors assumes no responsibility or liability for the\r
14  * use of the software, conveys no license or title under any patent,\r
15  * copyright, or mask work right to the product. NXP Semiconductors\r
16  * reserves the right to make changes in the software without\r
17  * notification. NXP Semiconductors also make no representation or\r
18  * warranty that such application will be suitable for the specified\r
19  * use without further testing or modification.\r
20 ****************************************************************************/\r
21 #ifndef __LPC11xx_H__\r
22 #define __LPC11xx_H__\r
23 \r
24 #ifdef __cplusplus\r
25  extern "C" {\r
26 #endif \r
27 \r
28 /** @addtogroup LPC11xx_Definitions LPC11xx Definitions\r
29   This file defines all structures and symbols for LPC11xx:\r
30     - Registers and bitfields\r
31     - peripheral base address\r
32     - peripheral ID\r
33     - PIO definitions\r
34   @{\r
35 */\r
36 \r
37 \r
38 /******************************************************************************/\r
39 /*                Processor and Core Peripherals                              */\r
40 /******************************************************************************/\r
41 /** @addtogroup LPC11xx_CMSIS LPC11xx CMSIS Definitions\r
42   Configuration of the Cortex-M0 Processor and Core Peripherals\r
43   @{\r
44 */\r
45 \r
46 /*\r
47  * ==========================================================================\r
48  * ---------- Interrupt Number Definition -----------------------------------\r
49  * ==========================================================================\r
50  */\r
51 typedef enum IRQn\r
52 {\r
53 /******  Cortex-M0 Processor Exceptions Numbers ***************************************************/\r
54   NonMaskableInt_IRQn           = -14,    /*!< 2 Non Maskable Interrupt                           */\r
55   HardFault_IRQn                = -13,    /*!< 3 Cortex-M0 Hard Fault Interrupt                   */\r
56   SVCall_IRQn                   = -5,     /*!< 11 Cortex-M0 SV Call Interrupt                     */\r
57   PendSV_IRQn                   = -2,     /*!< 14 Cortex-M0 Pend SV Interrupt                     */\r
58   SysTick_IRQn                  = -1,     /*!< 15 Cortex-M0 System Tick Interrupt                 */\r
59 \r
60 /******  LPC11Cxx or LPC11xx Specific Interrupt Numbers *******************************************************/\r
61   WAKEUP0_IRQn                  = 0,        /*!< All I/O pins can be used as wakeup source.       */\r
62   WAKEUP1_IRQn                  = 1,        /*!< There are 13 pins in total for LPC11xx           */\r
63   WAKEUP2_IRQn                  = 2,\r
64   WAKEUP3_IRQn                  = 3,\r
65   WAKEUP4_IRQn                  = 4,   \r
66   WAKEUP5_IRQn                  = 5,        \r
67   WAKEUP6_IRQn                  = 6,        \r
68   WAKEUP7_IRQn                  = 7,        \r
69   WAKEUP8_IRQn                  = 8,        \r
70   WAKEUP9_IRQn                  = 9,        \r
71   WAKEUP10_IRQn                 = 10,       \r
72   WAKEUP11_IRQn                 = 11,       \r
73   WAKEUP12_IRQn                 = 12,       \r
74   CAN_IRQn                      = 13,       /*!< CAN Interrupt                                    */\r
75   SSP1_IRQn                     = 14,       /*!< SSP1 Interrupt                                   */\r
76   I2C_IRQn                      = 15,       /*!< I2C Interrupt                                    */\r
77   TIMER_16_0_IRQn               = 16,       /*!< 16-bit Timer0 Interrupt                          */\r
78   TIMER_16_1_IRQn               = 17,       /*!< 16-bit Timer1 Interrupt                          */\r
79   TIMER_32_0_IRQn               = 18,       /*!< 32-bit Timer0 Interrupt                          */\r
80   TIMER_32_1_IRQn               = 19,       /*!< 32-bit Timer1 Interrupt                          */\r
81   SSP0_IRQn                     = 20,       /*!< SSP0 Interrupt                                   */\r
82   UART_IRQn                     = 21,       /*!< UART Interrupt                                   */\r
83   Reserved0_IRQn                = 22,       /*!< Reserved Interrupt                               */\r
84   Reserved1_IRQn                = 23,       \r
85   ADC_IRQn                      = 24,       /*!< A/D Converter Interrupt                          */\r
86   WDT_IRQn                      = 25,       /*!< Watchdog timer Interrupt                         */  \r
87   BOD_IRQn                      = 26,       /*!< Brown Out Detect(BOD) Interrupt                  */\r
88   FMC_IRQn                      = 27,       /*!< Flash Memory Controller Interrupt                */\r
89   EINT3_IRQn                    = 28,       /*!< External Interrupt 3 Interrupt                   */\r
90   EINT2_IRQn                    = 29,       /*!< External Interrupt 2 Interrupt                   */\r
91   EINT1_IRQn                    = 30,       /*!< External Interrupt 1 Interrupt                   */\r
92   EINT0_IRQn                    = 31,       /*!< External Interrupt 0 Interrupt                   */\r
93 } IRQn_Type;\r
94 \r
95 /*\r
96  * ==========================================================================\r
97  * ----------- Processor and Core Peripheral Section ------------------------\r
98  * ==========================================================================\r
99  */\r
100 \r
101 /* Configuration of the Cortex-M0 Processor and Core Peripherals */\r
102 #define __MPU_PRESENT             0         /*!< MPU present or not                               */\r
103 #define __NVIC_PRIO_BITS          2         /*!< Number of Bits used for Priority Levels          */\r
104 #define __Vendor_SysTickConfig    0         /*!< Set to 1 if different SysTick Config is used     */\r
105 \r
106 /*@}*/ /* end of group LPC11xx_CMSIS */\r
107 \r
108 \r
109 #include "core_cm0.h"                       /* Cortex-M0 processor and core peripherals           */\r
110 #include "system_LPC11xx.h"                 /* System Header                                      */\r
111 \r
112 \r
113 /******************************************************************************/\r
114 /*                Device Specific Peripheral Registers structures             */\r
115 /******************************************************************************/\r
116 \r
117 #if defined ( __CC_ARM   )\r
118 #pragma anon_unions\r
119 #endif\r
120 \r
121 /*------------- System Control (SYSCON) --------------------------------------*/\r
122 /** @addtogroup LPC11xx_SYSCON LPC11xx System Control Block \r
123   @{\r
124 */\r
125 typedef struct\r
126 {\r
127   __IO uint32_t SYSMEMREMAP;            /*!< Offset: 0x000 System memory remap (R/W) */\r
128   __IO uint32_t PRESETCTRL;             /*!< Offset: 0x004 Peripheral reset control (R/W) */\r
129   __IO uint32_t SYSPLLCTRL;             /*!< Offset: 0x008 System PLL control (R/W) */\r
130   __IO uint32_t SYSPLLSTAT;             /*!< Offset: 0x00C System PLL status (R/W ) */\r
131        uint32_t RESERVED0[4];\r
132 \r
133   __IO uint32_t SYSOSCCTRL;             /*!< Offset: 0x020 System oscillator control (R/W) */\r
134   __IO uint32_t WDTOSCCTRL;             /*!< Offset: 0x024 Watchdog oscillator control (R/W) */\r
135   __IO uint32_t IRCCTRL;                /*!< Offset: 0x028 IRC control (R/W) */\r
136        uint32_t RESERVED1[1];\r
137   __IO uint32_t SYSRSTSTAT;             /*!< Offset: 0x030 System reset status Register (R/ ) */\r
138        uint32_t RESERVED2[3];\r
139   __IO uint32_t SYSPLLCLKSEL;           /*!< Offset: 0x040 System PLL clock source select (R/W) */      \r
140   __IO uint32_t SYSPLLCLKUEN;           /*!< Offset: 0x044 System PLL clock source update enable (R/W) */\r
141        uint32_t RESERVED3[10];\r
142 \r
143   __IO uint32_t MAINCLKSEL;             /*!< Offset: 0x070 Main clock source select (R/W) */\r
144   __IO uint32_t MAINCLKUEN;             /*!< Offset: 0x074 Main clock source update enable (R/W) */\r
145   __IO uint32_t SYSAHBCLKDIV;           /*!< Offset: 0x078 System AHB clock divider (R/W) */\r
146        uint32_t RESERVED4[1];\r
147 \r
148   __IO uint32_t SYSAHBCLKCTRL;          /*!< Offset: 0x080 System AHB clock control (R/W) */\r
149        uint32_t RESERVED5[4];\r
150   __IO uint32_t SSP0CLKDIV;             /*!< Offset: 0x094 SSP0 clock divider (R/W) */          \r
151   __IO uint32_t UARTCLKDIV;             /*!< Offset: 0x098 UART clock divider (R/W) */\r
152   __IO uint32_t SSP1CLKDIV;             /*!< Offset: 0x09C SSP1 clock divider (R/W) */          \r
153        uint32_t RESERVED6[12];\r
154 \r
155   __IO uint32_t WDTCLKSEL;              /*!< Offset: 0x0D0 WDT clock source select (R/W) */\r
156   __IO uint32_t WDTCLKUEN;              /*!< Offset: 0x0D4 WDT clock source update enable (R/W) */\r
157   __IO uint32_t WDTCLKDIV;              /*!< Offset: 0x0D8 WDT clock divider (R/W) */\r
158        uint32_t RESERVED8[1];              \r
159   __IO uint32_t CLKOUTCLKSEL;           /*!< Offset: 0x0E0 CLKOUT clock source select (R/W) */\r
160   __IO uint32_t CLKOUTUEN;              /*!< Offset: 0x0E4 CLKOUT clock source update enable (R/W) */\r
161   __IO uint32_t CLKOUTDIV;              /*!< Offset: 0x0E8 CLKOUT clock divider (R/W) */       \r
162        uint32_t RESERVED9[5];\r
163   \r
164   __IO uint32_t PIOPORCAP0;             /*!< Offset: 0x100 POR captured PIO status 0 (R/ ) */           \r
165   __IO uint32_t PIOPORCAP1;             /*!< Offset: 0x104 POR captured PIO status 1 (R/ ) */   \r
166        uint32_t RESERVED10[18];\r
167   __IO uint32_t BODCTRL;                /*!< Offset: 0x150 BOD control (R/W) */\r
168   __IO uint32_t SYSTCKCAL;              /*!< Offset: 0x154 System tick counter calibration (R/W) */\r
169        uint32_t RESERVED13[42];\r
170 \r
171   __IO uint32_t STARTAPRP0;             /*!< Offset: 0x200 Start logic edge control Register 0 (R/W) */     \r
172   __IO uint32_t STARTERP0;              /*!< Offset: 0x204 Start logic signal enable Register 0 (R/W) */      \r
173   __O  uint32_t STARTRSRP0CLR;          /*!< Offset: 0x208 Start logic reset Register 0  ( /W) */\r
174   __IO uint32_t STARTSRP0;              /*!< Offset: 0x20C Start logic status Register 0 (R/W) */\r
175   __IO uint32_t STARTAPRP1;             /*!< Offset: 0x210 Start logic edge control Register 0 (R/W). (LPC11UXX only) */     \r
176   __IO uint32_t STARTERP1;              /*!< Offset: 0x214 Start logic signal enable Register 0 (R/W). (LPC11UXX only) */      \r
177   __O  uint32_t STARTRSRP1CLR;          /*!< Offset: 0x218 Start logic reset Register 0  ( /W). (LPC11UXX only) */\r
178   __IO uint32_t STARTSRP1;              /*!< Offset: 0x21C Start logic status Register 0 (R/W). (LPC11UXX only) */\r
179        uint32_t RESERVED17[4];\r
180 \r
181   __IO uint32_t PDSLEEPCFG;             /*!< Offset: 0x230 Power-down states in Deep-sleep mode (R/W) */\r
182   __IO uint32_t PDAWAKECFG;             /*!< Offset: 0x234 Power-down states after wake-up (R/W) */        \r
183   __IO uint32_t PDRUNCFG;               /*!< Offset: 0x238 Power-down configuration Register (R/W) */\r
184        uint32_t RESERVED15[110];\r
185   __I  uint32_t DEVICE_ID;              /*!< Offset: 0x3F4 Device ID (R/ ) */\r
186 } LPC_SYSCON_TypeDef;\r
187 /*@}*/ /* end of group LPC11xx_SYSCON */\r
188 \r
189 \r
190 /*------------- Pin Connect Block (IOCON) --------------------------------*/\r
191 /** @addtogroup LPC11xx_IOCON LPC11xx I/O Configuration Block \r
192   @{\r
193 */\r
194 typedef struct\r
195 {\r
196   __IO uint32_t PIO2_6;                 /*!< Offset: 0x000 I/O configuration for pin PIO2_6 (R/W) */\r
197        uint32_t RESERVED0[1];\r
198   __IO uint32_t PIO2_0;                 /*!< Offset: 0x008 I/O configuration for pin PIO2_0/DTR/SSEL1 (R/W) */\r
199   __IO uint32_t RESET_PIO0_0;           /*!< Offset: 0x00C I/O configuration for pin RESET/PIO0_0  (R/W) */\r
200   __IO uint32_t PIO0_1;                 /*!< Offset: 0x010 I/O configuration for pin PIO0_1/CLKOUT/CT32B0_MAT2 (R/W) */\r
201   __IO uint32_t PIO1_8;                 /*!< Offset: 0x014 I/O configuration for pin PIO1_8/CT16B1_CAP0 (R/W) */\r
202        uint32_t RESERVED1[1];\r
203   __IO uint32_t PIO0_2;                 /*!< Offset: 0x01C I/O configuration for pin PIO0_2/SSEL0/CT16B0_CAP0 (R/W) */\r
204 \r
205   __IO uint32_t PIO2_7;                 /*!< Offset: 0x020 I/O configuration for pin PIO2_7 (R/W) */\r
206   __IO uint32_t PIO2_8;                 /*!< Offset: 0x024 I/O configuration for pin PIO2_8 (R/W) */\r
207   __IO uint32_t PIO2_1;                 /*!< Offset: 0x028 I/O configuration for pin PIO2_1/nDSR/SCK1 (R/W) */\r
208   __IO uint32_t PIO0_3;                 /*!< Offset: 0x02C I/O configuration for pin PIO0_3 (R/W) */\r
209   __IO uint32_t PIO0_4;                 /*!< Offset: 0x030 I/O configuration for pin PIO0_4/SCL (R/W) */\r
210   __IO uint32_t PIO0_5;                 /*!< Offset: 0x034 I/O configuration for pin PIO0_5/SDA (R/W) */\r
211   __IO uint32_t PIO1_9;                 /*!< Offset: 0x038 I/O configuration for pin PIO1_9/CT16B1_MAT0 (R/W) */\r
212   __IO uint32_t PIO3_4;                 /*!< Offset: 0x03C I/O configuration for pin PIO3_4 (R/W) */\r
213 \r
214   __IO uint32_t PIO2_4;                 /*!< Offset: 0x040 I/O configuration for pin PIO2_4 (R/W) */\r
215   __IO uint32_t PIO2_5;                 /*!< Offset: 0x044 I/O configuration for pin PIO2_5 (R/W) */\r
216   __IO uint32_t PIO3_5;                 /*!< Offset: 0x048 I/O configuration for pin PIO3_5 (R/W) */\r
217   __IO uint32_t PIO0_6;                 /*!< Offset: 0x04C I/O configuration for pin PIO0_6/SCK0 (R/W) */\r
218   __IO uint32_t PIO0_7;                 /*!< Offset: 0x050 I/O configuration for pin PIO0_7/nCTS (R/W) */\r
219   __IO uint32_t PIO2_9;                 /*!< Offset: 0x054 I/O configuration for pin PIO2_9 (R/W) */\r
220   __IO uint32_t PIO2_10;                /*!< Offset: 0x058 I/O configuration for pin PIO2_10 (R/W) */\r
221   __IO uint32_t PIO2_2;                 /*!< Offset: 0x05C I/O configuration for pin PIO2_2/DCD/MISO1 (R/W) */\r
222 \r
223   __IO uint32_t PIO0_8;                 /*!< Offset: 0x060 I/O configuration for pin PIO0_8/MISO0/CT16B0_MAT0 (R/W) */\r
224   __IO uint32_t PIO0_9;                 /*!< Offset: 0x064 I/O configuration for pin PIO0_9/MOSI0/CT16B0_MAT1 (R/W) */\r
225   __IO uint32_t SWCLK_PIO0_10;          /*!< Offset: 0x068 I/O configuration for pin SWCLK/PIO0_10/SCK0/CT16B0_MAT2 (R/W) */\r
226   __IO uint32_t PIO1_10;                /*!< Offset: 0x06C I/O configuration for pin PIO1_10/AD6/CT16B1_MAT1 (R/W) */\r
227   __IO uint32_t PIO2_11;                /*!< Offset: 0x070 I/O configuration for pin PIO2_11/SCK0 (R/W) */\r
228   __IO uint32_t R_PIO0_11;              /*!< Offset: 0x074 I/O configuration for pin TDI/PIO0_11/AD0/CT32B0_MAT3 (R/W) */\r
229   __IO uint32_t R_PIO1_0;               /*!< Offset: 0x078 I/O configuration for pin TMS/PIO1_0/AD1/CT32B1_CAP0 (R/W) */\r
230   __IO uint32_t R_PIO1_1;               /*!< Offset: 0x07C I/O configuration for pin TDO/PIO1_1/AD2/CT32B1_MAT0 (R/W) */\r
231 \r
232   __IO uint32_t R_PIO1_2;               /*!< Offset: 0x080 I/O configuration for pin nTRST/PIO1_2/AD3/CT32B1_MAT1 (R/W) */\r
233   __IO uint32_t PIO3_0;                 /*!< Offset: 0x084 I/O configuration for pin PIO3_0/nDTR (R/W) */\r
234   __IO uint32_t PIO3_1;                 /*!< Offset: 0x088 I/O configuration for pin PIO3_1/nDSR (R/W) */\r
235   __IO uint32_t PIO2_3;                 /*!< Offset: 0x08C I/O configuration for pin PIO2_3/RI/MOSI1 (R/W) */\r
236   __IO uint32_t SWDIO_PIO1_3;           /*!< Offset: 0x090 I/O configuration for pin SWDIO/PIO1_3/AD4/CT32B1_MAT2 (R/W) */\r
237   __IO uint32_t PIO1_4;                 /*!< Offset: 0x094 I/O configuration for pin PIO1_4/AD5/CT32B1_MAT3 (R/W) */\r
238   __IO uint32_t PIO1_11;                /*!< Offset: 0x098 I/O configuration for pin PIO1_11/AD7 (R/W) */\r
239   __IO uint32_t PIO3_2;                 /*!< Offset: 0x09C I/O configuration for pin PIO3_2/nDCD (R/W) */\r
240 \r
241   __IO uint32_t PIO1_5;                 /*!< Offset: 0x0A0 I/O configuration for pin PIO1_5/nRTS/CT32B0_CAP0 (R/W) */\r
242   __IO uint32_t PIO1_6;                 /*!< Offset: 0x0A4 I/O configuration for pin PIO1_6/RXD/CT32B0_MAT0 (R/W) */\r
243   __IO uint32_t PIO1_7;                 /*!< Offset: 0x0A8 I/O configuration for pin PIO1_7/TXD/CT32B0_MAT1 (R/W) */\r
244   __IO uint32_t PIO3_3;                 /*!< Offset: 0x0AC I/O configuration for pin PIO3_3/nRI (R/W) */\r
245   __IO uint32_t SCK_LOC;                /*!< Offset: 0x0B0 SCK pin location select Register (R/W) */\r
246   __IO uint32_t DSR_LOC;                /*!< Offset: 0x0B4 DSR pin location select Register (R/W) */\r
247   __IO uint32_t DCD_LOC;                /*!< Offset: 0x0B8 DCD pin location select Register (R/W) */\r
248   __IO uint32_t RI_LOC;                 /*!< Offset: 0x0BC RI pin location Register (R/W) */\r
249 } LPC_IOCON_TypeDef;\r
250 /*@}*/ /* end of group LPC11xx_IOCON */\r
251 \r
252 \r
253 /*------------- Power Management Unit (PMU) --------------------------*/\r
254 /** @addtogroup LPC11xx_PMU LPC11xx Power Management Unit \r
255   @{\r
256 */\r
257 typedef struct\r
258 {\r
259   __IO uint32_t PCON;                   /*!< Offset: 0x000 Power control Register (R/W) */\r
260   __IO uint32_t GPREG0;                 /*!< Offset: 0x004 General purpose Register 0 (R/W) */\r
261   __IO uint32_t GPREG1;                 /*!< Offset: 0x008 General purpose Register 1 (R/W) */\r
262   __IO uint32_t GPREG2;                 /*!< Offset: 0x00C General purpose Register 2 (R/W) */\r
263   __IO uint32_t GPREG3;                 /*!< Offset: 0x010 General purpose Register 3 (R/W) */\r
264   __IO uint32_t GPREG4;                 /*!< Offset: 0x014 General purpose Register 4 (R/W) */\r
265 } LPC_PMU_TypeDef;\r
266 /*@}*/ /* end of group LPC11xx_PMU */\r
267 \r
268 \r
269 \r
270 // ------------------------------------------------------------------------------------------------\r
271 // -----                                       FLASHCTRL                                      -----\r
272 // ------------------------------------------------------------------------------------------------\r
273 \r
274 typedef struct {                            /*!< (@ 0x4003C000) FLASHCTRL Structure    */\r
275   __I  uint32_t RESERVED0[4];\r
276   __IO uint32_t FLASHCFG;                   /*!< (@ 0x4003C010) Flash memory access time configuration register */\r
277   __I  uint32_t RESERVED1[3];\r
278   __IO uint32_t FMSSTART;                   /*!< (@ 0x4003C020) Signature start address register */\r
279   __IO uint32_t FMSSTOP;                    /*!< (@ 0x4003C024) Signature stop-address register */\r
280   __I  uint32_t RESERVED2[1];\r
281   __I  uint32_t FMSW0;                      /*!< (@ 0x4003C02C) Word 0 [31:0]          */\r
282   __I  uint32_t FMSW1;                      /*!< (@ 0x4003C030) Word 1 [63:32]         */\r
283   __I  uint32_t FMSW2;                      /*!< (@ 0x4003C034) Word 2 [95:64]         */\r
284   __I  uint32_t FMSW3;                      /*!< (@ 0x4003C038) Word 3 [127:96]        */\r
285   __I  uint32_t RESERVED3[1001];\r
286   __I  uint32_t FMSTAT;                     /*!< (@ 0x4003CFE0) Signature generation status register */\r
287   __I  uint32_t RESERVED4[1];\r
288   __IO uint32_t FMSTATCLR;                  /*!< (@ 0x4003CFE8) Signature generation status clear register */\r
289 } LPC_FLASHCTRL_Type;\r
290 \r
291 \r
292 /*------------- General Purpose Input/Output (GPIO) --------------------------*/\r
293 /** @addtogroup LPC11xx_GPIO LPC11xx General Purpose Input/Output \r
294   @{\r
295 */\r
296 typedef struct\r
297 {\r
298   union {\r
299     __IO uint32_t MASKED_ACCESS[4096];  /*!< Offset: 0x0000 to 0x3FFC Port data Register for pins PIOn_0 to PIOn_11 (R/W) */\r
300     struct {\r
301          uint32_t RESERVED0[4095];\r
302     __IO uint32_t DATA;                 /*!< Offset: 0x3FFC Port data Register (R/W) */\r
303     };\r
304   };\r
305        uint32_t RESERVED1[4096];\r
306   __IO uint32_t DIR;                    /*!< Offset: 0x8000 Data direction Register (R/W) */\r
307   __IO uint32_t IS;                     /*!< Offset: 0x8004 Interrupt sense Register (R/W) */\r
308   __IO uint32_t IBE;                    /*!< Offset: 0x8008 Interrupt both edges Register (R/W) */\r
309   __IO uint32_t IEV;                    /*!< Offset: 0x800C Interrupt event Register  (R/W) */\r
310   __IO uint32_t IE;                     /*!< Offset: 0x8010 Interrupt mask Register (R/W) */\r
311   __IO uint32_t RIS;                    /*!< Offset: 0x8014 Raw interrupt status Register (R/ ) */\r
312   __IO uint32_t MIS;                    /*!< Offset: 0x8018 Masked interrupt status Register (R/ ) */\r
313   __IO uint32_t IC;                     /*!< Offset: 0x801C Interrupt clear Register (R/W) */\r
314 } LPC_GPIO_TypeDef;\r
315 /*@}*/ /* end of group LPC11xx_GPIO */\r
316 \r
317 /*------------- Timer (TMR) --------------------------------------------------*/\r
318 /** @addtogroup LPC11xx_TMR LPC11xx 16/32-bit Counter/Timer \r
319   @{\r
320 */\r
321 typedef struct\r
322 {\r
323   __IO uint32_t IR;                     /*!< Offset: 0x000 Interrupt Register (R/W) */\r
324   __IO uint32_t TCR;                    /*!< Offset: 0x004 Timer Control Register (R/W) */\r
325   __IO uint32_t TC;                     /*!< Offset: 0x008 Timer Counter Register (R/W) */\r
326   __IO uint32_t PR;                     /*!< Offset: 0x00C Prescale Register (R/W) */\r
327   __IO uint32_t PC;                     /*!< Offset: 0x010 Prescale Counter Register (R/W) */\r
328   __IO uint32_t MCR;                    /*!< Offset: 0x014 Match Control Register (R/W) */\r
329   __IO uint32_t MR0;                    /*!< Offset: 0x018 Match Register 0 (R/W) */\r
330   __IO uint32_t MR1;                    /*!< Offset: 0x01C Match Register 1 (R/W) */\r
331   __IO uint32_t MR2;                    /*!< Offset: 0x020 Match Register 2 (R/W) */\r
332   __IO uint32_t MR3;                    /*!< Offset: 0x024 Match Register 3 (R/W) */\r
333   __IO uint32_t CCR;                    /*!< Offset: 0x028 Capture Control Register (R/W) */\r
334   __I  uint32_t CR0;                    /*!< Offset: 0x02C Capture Register 0 (R/ ) */\r
335        uint32_t RESERVED1[3];\r
336   __IO uint32_t EMR;                    /*!< Offset: 0x03C External Match Register (R/W) */\r
337        uint32_t RESERVED2[12];\r
338   __IO uint32_t CTCR;                   /*!< Offset: 0x070 Count Control Register (R/W) */\r
339   __IO uint32_t PWMC;                   /*!< Offset: 0x074 PWM Control Register (R/W) */\r
340 } LPC_TMR_TypeDef;\r
341 /*@}*/ /* end of group LPC11xx_TMR */\r
342 \r
343 \r
344 /*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/\r
345 /** @addtogroup LPC11xx_UART LPC11xx Universal Asynchronous Receiver/Transmitter \r
346   @{\r
347 */\r
348 typedef struct\r
349 {\r
350   union {\r
351   __I  uint32_t  RBR;                   /*!< Offset: 0x000 Receiver Buffer  Register (R/ ) */\r
352   __O  uint32_t  THR;                   /*!< Offset: 0x000 Transmit Holding Register ( /W) */\r
353   __IO uint32_t  DLL;                   /*!< Offset: 0x000 Divisor Latch LSB (R/W) */\r
354   };\r
355   union {\r
356   __IO uint32_t  DLM;                   /*!< Offset: 0x004 Divisor Latch MSB (R/W) */\r
357   __IO uint32_t  IER;                   /*!< Offset: 0x000 Interrupt Enable Register (R/W) */\r
358   };\r
359   union {\r
360   __I  uint32_t  IIR;                   /*!< Offset: 0x008 Interrupt ID Register (R/ ) */\r
361   __O  uint32_t  FCR;                   /*!< Offset: 0x008 FIFO Control Register ( /W) */\r
362   };\r
363   __IO uint32_t  LCR;                   /*!< Offset: 0x00C Line Control Register (R/W) */\r
364   __IO uint32_t  MCR;                   /*!< Offset: 0x010 Modem control Register (R/W) */\r
365   __I  uint32_t  LSR;                   /*!< Offset: 0x014 Line Status Register (R/ ) */\r
366   __I  uint32_t  MSR;                   /*!< Offset: 0x018 Modem status Register (R/ ) */\r
367   __IO uint32_t  SCR;                   /*!< Offset: 0x01C Scratch Pad Register (R/W) */\r
368   __IO uint32_t  ACR;                   /*!< Offset: 0x020 Auto-baud Control Register (R/W) */\r
369        uint32_t  RESERVED0;\r
370   __IO uint32_t  FDR;                   /*!< Offset: 0x028 Fractional Divider Register (R/W) */\r
371        uint32_t  RESERVED1;\r
372   __IO uint32_t  TER;                   /*!< Offset: 0x030 Transmit Enable Register (R/W) */\r
373        uint32_t  RESERVED2[6];\r
374   __IO uint32_t  RS485CTRL;             /*!< Offset: 0x04C RS-485/EIA-485 Control Register (R/W) */\r
375   __IO uint32_t  ADRMATCH;              /*!< Offset: 0x050 RS-485/EIA-485 address match Register (R/W) */\r
376   __IO uint32_t  RS485DLY;              /*!< Offset: 0x054 RS-485/EIA-485 direction control delay Register (R/W) */\r
377   __I  uint32_t  FIFOLVL;               /*!< Offset: 0x058 FIFO Level Register (R) */\r
378 } LPC_UART_TypeDef;\r
379 /*@}*/ /* end of group LPC11xx_UART */\r
380 \r
381 \r
382 /*------------- Synchronous Serial Communication (SSP) -----------------------*/\r
383 /** @addtogroup LPC11xx_SSP LPC11xx Synchronous Serial Port \r
384   @{\r
385 */\r
386 typedef struct\r
387 {\r
388   __IO uint32_t CR0;                    /*!< Offset: 0x000 Control Register 0 (R/W) */\r
389   __IO uint32_t CR1;                    /*!< Offset: 0x004 Control Register 1 (R/W) */\r
390   __IO uint32_t DR;                     /*!< Offset: 0x008 Data Register (R/W) */\r
391   __I  uint32_t SR;                     /*!< Offset: 0x00C Status Registe (R/ ) */\r
392   __IO uint32_t CPSR;                   /*!< Offset: 0x010 Clock Prescale Register (R/W) */\r
393   __IO uint32_t IMSC;                   /*!< Offset: 0x014 Interrupt Mask Set and Clear Register (R/W) */\r
394   __IO uint32_t RIS;                    /*!< Offset: 0x018 Raw Interrupt Status Register (R/W) */\r
395   __IO uint32_t MIS;                    /*!< Offset: 0x01C Masked Interrupt Status Register (R/W) */\r
396   __IO uint32_t ICR;                    /*!< Offset: 0x020 SSPICR Interrupt Clear Register (R/W) */\r
397 } LPC_SSP_TypeDef;\r
398 /*@}*/ /* end of group LPC11xx_SSP */\r
399 \r
400 \r
401 /*------------- Inter-Integrated Circuit (I2C) -------------------------------*/\r
402 /** @addtogroup LPC11xx_I2C LPC11xx I2C-Bus Interface \r
403   @{\r
404 */\r
405 typedef struct\r
406 {\r
407   __IO uint32_t CONSET;                 /*!< Offset: 0x000 I2C Control Set Register (R/W) */\r
408   __I  uint32_t STAT;                   /*!< Offset: 0x004 I2C Status Register (R/ ) */\r
409   __IO uint32_t DAT;                    /*!< Offset: 0x008 I2C Data Register (R/W) */\r
410   __IO uint32_t ADR0;                   /*!< Offset: 0x00C I2C Slave Address Register 0 (R/W) */\r
411   __IO uint32_t SCLH;                   /*!< Offset: 0x010 SCH Duty Cycle Register High Half Word (R/W) */\r
412   __IO uint32_t SCLL;                   /*!< Offset: 0x014 SCL Duty Cycle Register Low Half Word (R/W) */\r
413   __O  uint32_t CONCLR;                 /*!< Offset: 0x018 I2C Control Clear Register ( /W) */\r
414   __IO uint32_t MMCTRL;                 /*!< Offset: 0x01C Monitor mode control register (R/W) */\r
415   __IO uint32_t ADR1;                   /*!< Offset: 0x020 I2C Slave Address Register 1 (R/W) */\r
416   __IO uint32_t ADR2;                   /*!< Offset: 0x024 I2C Slave Address Register 2 (R/W) */\r
417   __IO uint32_t ADR3;                   /*!< Offset: 0x028 I2C Slave Address Register 3 (R/W) */\r
418   __I  uint32_t DATA_BUFFER;            /*!< Offset: 0x02C Data buffer register ( /W) */\r
419   __IO uint32_t MASK0;                  /*!< Offset: 0x030 I2C Slave address mask register 0 (R/W) */\r
420   __IO uint32_t MASK1;                  /*!< Offset: 0x034 I2C Slave address mask register 1 (R/W) */\r
421   __IO uint32_t MASK2;                  /*!< Offset: 0x038 I2C Slave address mask register 2 (R/W) */\r
422   __IO uint32_t MASK3;                  /*!< Offset: 0x03C I2C Slave address mask register 3 (R/W) */\r
423 } LPC_I2C_TypeDef;\r
424 /*@}*/ /* end of group LPC11xx_I2C */\r
425 \r
426 \r
427 /*------------- Watchdog Timer (WDT) -----------------------------------------*/\r
428 /** @addtogroup LPC11xx_WDT LPC11xx WatchDog Timer \r
429   @{\r
430 */\r
431 typedef struct\r
432 {\r
433   __IO uint32_t MOD;                    /*!< Offset: 0x000 Watchdog mode register (R/W) */\r
434   __IO uint32_t TC;                     /*!< Offset: 0x004 Watchdog timer constant register (R/W) */\r
435   __O  uint32_t FEED;                   /*!< Offset: 0x008 Watchdog feed sequence register (W) */\r
436   __I  uint32_t TV;                     /*!< Offset: 0x00C Watchdog timer value register (R) */\r
437        uint32_t RESERVED0;\r
438   __IO uint32_t WARNINT;                                /*!< Offset: 0x014 Watchdog timer warning int. register (R/W) */\r
439   __IO uint32_t WINDOW;                                 /*!< Offset: 0x018 Watchdog timer window value register (R/W) */\r
440 } LPC_WDT_TypeDef;\r
441 /*@}*/ /* end of group LPC11xx_WDT */\r
442 \r
443 \r
444 /*------------- Analog-to-Digital Converter (ADC) ----------------------------*/\r
445 /** @addtogroup LPC11xx_ADC LPC11xx Analog-to-Digital Converter \r
446   @{\r
447 */\r
448 typedef struct\r
449 {\r
450   __IO uint32_t CR;                     /*!< Offset: 0x000       A/D Control Register (R/W) */\r
451   __IO uint32_t GDR;                    /*!< Offset: 0x004       A/D Global Data Register (R/W) */\r
452        uint32_t RESERVED0;\r
453   __IO uint32_t INTEN;                  /*!< Offset: 0x00C       A/D Interrupt Enable Register (R/W) */\r
454   __IO uint32_t DR[8];                  /*!< Offset: 0x010-0x02C A/D Channel 0..7 Data Register (R/W) */\r
455   __I  uint32_t STAT;                   /*!< Offset: 0x030       A/D Status Register (R/ ) */\r
456 } LPC_ADC_TypeDef;\r
457 /*@}*/ /* end of group LPC11xx_ADC */\r
458 \r
459 \r
460 /*------------- CAN Controller (CAN) ----------------------------*/\r
461 /** @addtogroup LPC11xx_CAN LPC11xx Controller Area Network(CAN) \r
462   @{\r
463 */\r
464 typedef struct\r
465 {\r
466   __IO uint32_t CNTL;                           /* 0x000 */\r
467   __IO uint32_t STAT;\r
468   __IO uint32_t EC;\r
469   __IO uint32_t BT;\r
470   __IO uint32_t INT;\r
471   __IO uint32_t TEST;\r
472   __IO uint32_t BRPE;\r
473        uint32_t RESERVED0;\r
474   __IO uint32_t IF1_CMDREQ;                     /* 0x020 */\r
475   __IO uint32_t IF1_CMDMSK;\r
476   __IO uint32_t IF1_MSK1;\r
477   __IO uint32_t IF1_MSK2;\r
478   __IO uint32_t IF1_ARB1;\r
479   __IO uint32_t IF1_ARB2;\r
480   __IO uint32_t IF1_MCTRL;\r
481   __IO uint32_t IF1_DA1;\r
482   __IO uint32_t IF1_DA2;\r
483   __IO uint32_t IF1_DB1;\r
484   __IO uint32_t IF1_DB2;\r
485        uint32_t RESERVED1[13];   \r
486   __IO uint32_t IF2_CMDREQ;                     /* 0x080 */\r
487   __IO uint32_t IF2_CMDMSK;\r
488   __IO uint32_t IF2_MSK1;\r
489   __IO uint32_t IF2_MSK2;\r
490   __IO uint32_t IF2_ARB1;\r
491   __IO uint32_t IF2_ARB2;\r
492   __IO uint32_t IF2_MCTRL;\r
493   __IO uint32_t IF2_DA1;\r
494   __IO uint32_t IF2_DA2;\r
495   __IO uint32_t IF2_DB1;\r
496   __IO uint32_t IF2_DB2;\r
497        uint32_t RESERVED2[21];\r
498   __I  uint32_t TXREQ1;                         /* 0x100 */\r
499   __I  uint32_t TXREQ2;\r
500        uint32_t RESERVED3[6];\r
501   __I  uint32_t ND1;                            /* 0x120 */\r
502   __I  uint32_t ND2;\r
503        uint32_t RESERVED4[6];\r
504   __I  uint32_t IR1;                            /* 0x140 */\r
505   __I  uint32_t IR2;\r
506        uint32_t RESERVED5[6];\r
507   __I  uint32_t MSGV1;                          /* 0x160 */\r
508   __I  uint32_t MSGV2;\r
509        uint32_t RESERVED6[6];\r
510   __IO uint32_t CLKDIV;                         /* 0x180 */\r
511 } LPC_CAN_TypeDef;\r
512 /*@}*/ /* end of group LPC11xx_CAN */\r
513 \r
514 #if defined ( __CC_ARM   )\r
515 #pragma no_anon_unions\r
516 #endif\r
517 \r
518 /******************************************************************************/\r
519 /*                         Peripheral memory map                              */\r
520 /******************************************************************************/\r
521 /* Base addresses                                                             */\r
522 #define LPC_FLASH_BASE        (0x00000000UL)\r
523 #define LPC_RAM_BASE          (0x10000000UL)\r
524 #define LPC_APB0_BASE         (0x40000000UL)\r
525 #define LPC_AHB_BASE          (0x50000000UL)\r
526 \r
527 /* APB0 peripherals                                                           */\r
528 #define LPC_I2C_BASE          (LPC_APB0_BASE + 0x00000)\r
529 #define LPC_WDT_BASE          (LPC_APB0_BASE + 0x04000)\r
530 #define LPC_UART_BASE         (LPC_APB0_BASE + 0x08000)\r
531 #define LPC_CT16B0_BASE       (LPC_APB0_BASE + 0x0C000)\r
532 #define LPC_CT16B1_BASE       (LPC_APB0_BASE + 0x10000)\r
533 #define LPC_CT32B0_BASE       (LPC_APB0_BASE + 0x14000)\r
534 #define LPC_CT32B1_BASE       (LPC_APB0_BASE + 0x18000)\r
535 #define LPC_ADC_BASE          (LPC_APB0_BASE + 0x1C000)\r
536 #define LPC_PMU_BASE          (LPC_APB0_BASE + 0x38000)\r
537 #define LPC_FLASHCTRL_BASE    (LPC_APB0_BASE + 0x3C000)\r
538 #define LPC_SSP0_BASE         (LPC_APB0_BASE + 0x40000)\r
539 #define LPC_IOCON_BASE        (LPC_APB0_BASE + 0x44000)\r
540 #define LPC_SYSCON_BASE       (LPC_APB0_BASE + 0x48000)\r
541 #define LPC_CAN_BASE          (LPC_APB0_BASE + 0x50000)\r
542 #define LPC_SSP1_BASE         (LPC_APB0_BASE + 0x58000)\r
543 \r
544 /* AHB peripherals                                                            */\r
545 #define LPC_GPIO_BASE         (LPC_AHB_BASE  + 0x00000)\r
546 #define LPC_GPIO0_BASE        (LPC_AHB_BASE  + 0x00000)\r
547 #define LPC_GPIO1_BASE        (LPC_AHB_BASE  + 0x10000)\r
548 #define LPC_GPIO2_BASE        (LPC_AHB_BASE  + 0x20000)\r
549 #define LPC_GPIO3_BASE        (LPC_AHB_BASE  + 0x30000)\r
550 \r
551 /******************************************************************************/\r
552 /*                         Peripheral declaration                             */\r
553 /******************************************************************************/\r
554 #define LPC_I2C               ((LPC_I2C_TypeDef    *) LPC_I2C_BASE   )\r
555 #define LPC_WDT               ((LPC_WDT_TypeDef    *) LPC_WDT_BASE   )\r
556 #define LPC_UART              ((LPC_UART_TypeDef   *) LPC_UART_BASE  )\r
557 #define LPC_TMR16B0           ((LPC_TMR_TypeDef    *) LPC_CT16B0_BASE)\r
558 #define LPC_TMR16B1           ((LPC_TMR_TypeDef    *) LPC_CT16B1_BASE)\r
559 #define LPC_TMR32B0           ((LPC_TMR_TypeDef    *) LPC_CT32B0_BASE)\r
560 #define LPC_TMR32B1           ((LPC_TMR_TypeDef    *) LPC_CT32B1_BASE)\r
561 #define LPC_ADC               ((LPC_ADC_TypeDef    *) LPC_ADC_BASE   )\r
562 #define LPC_PMU               ((LPC_PMU_TypeDef    *) LPC_PMU_BASE   )\r
563 #define LPC_FLASHCTRL         ((LPC_FLASHCTRL_Type *) LPC_FLASHCTRL_BASE)\r
564 #define LPC_SSP0              ((LPC_SSP_TypeDef    *) LPC_SSP0_BASE  )\r
565 #define LPC_SSP1              ((LPC_SSP_TypeDef    *) LPC_SSP1_BASE  )\r
566 #define LPC_CAN               ((LPC_CAN_TypeDef    *) LPC_CAN_BASE   )\r
567 #define LPC_IOCON             ((LPC_IOCON_TypeDef  *) LPC_IOCON_BASE )\r
568 #define LPC_SYSCON            ((LPC_SYSCON_TypeDef *) LPC_SYSCON_BASE)\r
569 #define LPC_GPIO0             ((LPC_GPIO_TypeDef   *) LPC_GPIO0_BASE )\r
570 #define LPC_GPIO1             ((LPC_GPIO_TypeDef   *) LPC_GPIO1_BASE )\r
571 #define LPC_GPIO2             ((LPC_GPIO_TypeDef   *) LPC_GPIO2_BASE )\r
572 #define LPC_GPIO3             ((LPC_GPIO_TypeDef   *) LPC_GPIO3_BASE )\r
573 \r
574 #ifdef __cplusplus\r
575 }\r
576 #endif\r
577 \r
578 #endif  /* __LPC11xx_H__ */\r