Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed by
LPC23xx.h
00001 /* mbed Microcontroller Library - LPC23xx CMSIS-like structs 00002 * Copyright (C) 2009 ARM Limited. All rights reserved. 00003 * 00004 * An LPC23xx header file, based on the CMSIS LPC17xx.h and old LPC23xx.h 00005 */ 00006 00007 #ifndef __LPC23xx_H 00008 #define __LPC23xx_H 00009 00010 #ifdef __cplusplus 00011 extern "C" { 00012 #endif 00013 00014 /* 00015 * ========================================================================== 00016 * ---------- Interrupt Number Definition ----------------------------------- 00017 * ========================================================================== 00018 */ 00019 00020 typedef enum IRQn 00021 { 00022 /****** LPC23xx Specific Interrupt Numbers *******************************************************/ 00023 WDT_IRQn = 0, /*!< Watchdog Timer Interrupt */ 00024 00025 TIMER0_IRQn = 4, /*!< Timer0 Interrupt */ 00026 TIMER1_IRQn = 5, /*!< Timer1 Interrupt */ 00027 UART0_IRQn = 6, /*!< UART0 Interrupt */ 00028 UART1_IRQn = 7, /*!< UART1 Interrupt */ 00029 PWM1_IRQn = 8, /*!< PWM1 Interrupt */ 00030 I2C0_IRQn = 9, /*!< I2C0 Interrupt */ 00031 SPI_IRQn = 10, /*!< SPI Interrupt */ 00032 SSP0_IRQn = 10, /*!< SSP0 Interrupt */ 00033 SSP1_IRQn = 11, /*!< SSP1 Interrupt */ 00034 PLL0_IRQn = 12, /*!< PLL0 Lock (Main PLL) Interrupt */ 00035 RTC_IRQn = 13, /*!< Real Time Clock Interrupt */ 00036 EINT0_IRQn = 14, /*!< External Interrupt 0 Interrupt */ 00037 EINT1_IRQn = 15, /*!< External Interrupt 1 Interrupt */ 00038 EINT2_IRQn = 16, /*!< External Interrupt 2 Interrupt */ 00039 EINT3_IRQn = 17, /*!< External Interrupt 3 Interrupt */ 00040 ADC_IRQn = 18, /*!< A/D Converter Interrupt */ 00041 I2C1_IRQn = 19, /*!< I2C1 Interrupt */ 00042 BOD_IRQn = 20, /*!< Brown-Out Detect Interrupt */ 00043 ENET_IRQn = 21, /*!< Ethernet Interrupt */ 00044 USB_IRQn = 22, /*!< USB Interrupt */ 00045 CAN_IRQn = 23, /*!< CAN Interrupt */ 00046 MIC_IRQn = 24, /*!< Multimedia Interface Controler */ 00047 DMA_IRQn = 25, /*!< General Purpose DMA Interrupt */ 00048 TIMER2_IRQn = 26, /*!< Timer2 Interrupt */ 00049 TIMER3_IRQn = 27, /*!< Timer3 Interrupt */ 00050 UART2_IRQn = 28, /*!< UART2 Interrupt */ 00051 UART3_IRQn = 29, /*!< UART3 Interrupt */ 00052 I2C2_IRQn = 30, /*!< I2C2 Interrupt */ 00053 I2S_IRQn = 31, /*!< I2S Interrupt */ 00054 } IRQn_Type ; 00055 00056 /* 00057 * ========================================================================== 00058 * ----------- Processor and Core Peripheral Section ------------------------ 00059 * ========================================================================== 00060 */ 00061 00062 /* Configuration of the ARM7 Processor and Core Peripherals */ 00063 #define __MPU_PRESENT 0 /*!< MPU present or not */ 00064 #define __NVIC_PRIO_BITS 4 /*!< Number of Bits used for Priority Levels */ 00065 #define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ 00066 00067 00068 #include <core_arm7.h> 00069 #include "system_LPC23xx.h" /* System Header */ 00070 00071 00072 /******************************************************************************/ 00073 /* Device Specific Peripheral registers structures */ 00074 /******************************************************************************/ 00075 #if defined ( __CC_ARM ) 00076 #pragma anon_unions 00077 #endif 00078 00079 /*------------- Vector Interupt Controler (VIC) ------------------------------*/ 00080 typedef struct 00081 { 00082 __I uint32_t IRQStatus; 00083 __I uint32_t FIQStatus; 00084 __I uint32_t RawIntr; 00085 __IO uint32_t IntSelect; 00086 __IO uint32_t IntEnable; 00087 __O uint32_t IntEnClr; 00088 __IO uint32_t SoftInt; 00089 __O uint32_t SoftIntClr; 00090 __IO uint32_t Protection; 00091 __IO uint32_t SWPriorityMask; 00092 __IO uint32_t RESERVED0[54]; 00093 __IO uint32_t VectAddr[32]; 00094 __IO uint32_t RESERVED1[32]; 00095 __IO uint32_t VectPriority[32]; 00096 __IO uint32_t RESERVED2[800]; 00097 __IO uint32_t Address; 00098 } LPC_VIC_TypeDef; 00099 00100 /*------------- System Control (SC) ------------------------------------------*/ 00101 typedef struct 00102 { 00103 __IO uint32_t MAMCR; 00104 __IO uint32_t MAMTIM; 00105 uint32_t RESERVED0[14]; 00106 __IO uint32_t MEMMAP; 00107 uint32_t RESERVED1[15]; 00108 __IO uint32_t PLL0CON; /* Clocking and Power Control */ 00109 __IO uint32_t PLL0CFG; 00110 __I uint32_t PLL0STAT; 00111 __O uint32_t PLL0FEED; 00112 uint32_t RESERVED2[12]; 00113 __IO uint32_t PCON; 00114 __IO uint32_t PCONP; 00115 uint32_t RESERVED3[15]; 00116 __IO uint32_t CCLKCFG; 00117 __IO uint32_t USBCLKCFG; 00118 __IO uint32_t CLKSRCSEL; 00119 uint32_t RESERVED4[12]; 00120 __IO uint32_t EXTINT; /* External Interrupts */ 00121 __IO uint32_t INTWAKE; 00122 __IO uint32_t EXTMODE; 00123 __IO uint32_t EXTPOLAR; 00124 uint32_t RESERVED6[12]; 00125 __IO uint32_t RSID; /* Reset */ 00126 __IO uint32_t CSPR; 00127 __IO uint32_t AHBCFG1; 00128 __IO uint32_t AHBCFG2; 00129 uint32_t RESERVED7[4]; 00130 __IO uint32_t SCS; /* Syscon Miscellaneous Registers */ 00131 __IO uint32_t IRCTRIM; /* Clock Dividers */ 00132 __IO uint32_t PCLKSEL0; 00133 __IO uint32_t PCLKSEL1; 00134 uint32_t RESERVED8[4]; 00135 __IO uint32_t USBIntSt; /* USB Device/OTG Interrupt Register */ 00136 uint32_t RESERVED9; 00137 // __IO uint32_t CLKOUTCFG; /* Clock Output Configuration */ 00138 } LPC_SC_TypeDef; 00139 00140 /*------------- Pin Connect Block (PINCON) -----------------------------------*/ 00141 typedef struct 00142 { 00143 __IO uint32_t PINSEL0; 00144 __IO uint32_t PINSEL1; 00145 __IO uint32_t PINSEL2; 00146 __IO uint32_t PINSEL3; 00147 __IO uint32_t PINSEL4; 00148 __IO uint32_t PINSEL5; 00149 __IO uint32_t PINSEL6; 00150 __IO uint32_t PINSEL7; 00151 __IO uint32_t PINSEL8; 00152 __IO uint32_t PINSEL9; 00153 __IO uint32_t PINSEL10; 00154 uint32_t RESERVED0[5]; 00155 __IO uint32_t PINMODE0; 00156 __IO uint32_t PINMODE1; 00157 __IO uint32_t PINMODE2; 00158 __IO uint32_t PINMODE3; 00159 __IO uint32_t PINMODE4; 00160 __IO uint32_t PINMODE5; 00161 __IO uint32_t PINMODE6; 00162 __IO uint32_t PINMODE7; 00163 __IO uint32_t PINMODE8; 00164 __IO uint32_t PINMODE9; 00165 __IO uint32_t PINMODE_OD0; 00166 __IO uint32_t PINMODE_OD1; 00167 __IO uint32_t PINMODE_OD2; 00168 __IO uint32_t PINMODE_OD3; 00169 __IO uint32_t PINMODE_OD4; 00170 } LPC_PINCON_TypeDef; 00171 00172 /*------------- General Purpose Input/Output (GPIO) --------------------------*/ 00173 typedef struct 00174 { 00175 __IO uint32_t FIODIR; 00176 uint32_t RESERVED0[3]; 00177 __IO uint32_t FIOMASK; 00178 __IO uint32_t FIOPIN; 00179 __IO uint32_t FIOSET; 00180 __O uint32_t FIOCLR; 00181 } LPC_GPIO_TypeDef; 00182 00183 typedef struct 00184 { 00185 __I uint32_t IntStatus; 00186 __I uint32_t IO0IntStatR; 00187 __I uint32_t IO0IntStatF; 00188 __O uint32_t IO0IntClr; 00189 __IO uint32_t IO0IntEnR; 00190 __IO uint32_t IO0IntEnF; 00191 uint32_t RESERVED0[3]; 00192 __I uint32_t IO2IntStatR; 00193 __I uint32_t IO2IntStatF; 00194 __O uint32_t IO2IntClr; 00195 __IO uint32_t IO2IntEnR; 00196 __IO uint32_t IO2IntEnF; 00197 } LPC_GPIOINT_TypeDef; 00198 00199 /*------------- Timer (TIM) --------------------------------------------------*/ 00200 typedef struct 00201 { 00202 __IO uint32_t IR; 00203 __IO uint32_t TCR; 00204 __IO uint32_t TC; 00205 __IO uint32_t PR; 00206 __IO uint32_t PC; 00207 __IO uint32_t MCR; 00208 __IO uint32_t MR0; 00209 __IO uint32_t MR1; 00210 __IO uint32_t MR2; 00211 __IO uint32_t MR3; 00212 __IO uint32_t CCR; 00213 __I uint32_t CR0; 00214 __I uint32_t CR1; 00215 uint32_t RESERVED0[2]; 00216 __IO uint32_t EMR; 00217 uint32_t RESERVED1[12]; 00218 __IO uint32_t CTCR; 00219 } LPC_TIM_TypeDef; 00220 00221 /*------------- Pulse-Width Modulation (PWM) ---------------------------------*/ 00222 typedef struct 00223 { 00224 __IO uint32_t IR; 00225 __IO uint32_t TCR; 00226 __IO uint32_t TC; 00227 __IO uint32_t PR; 00228 __IO uint32_t PC; 00229 __IO uint32_t MCR; 00230 __IO uint32_t MR0; 00231 __IO uint32_t MR1; 00232 __IO uint32_t MR2; 00233 __IO uint32_t MR3; 00234 __IO uint32_t CCR; 00235 __I uint32_t CR0; 00236 __I uint32_t CR1; 00237 __I uint32_t CR2; 00238 __I uint32_t CR3; 00239 uint32_t RESERVED0; 00240 __IO uint32_t MR4; 00241 __IO uint32_t MR5; 00242 __IO uint32_t MR6; 00243 __IO uint32_t PCR; 00244 __IO uint32_t LER; 00245 uint32_t RESERVED1[7]; 00246 __IO uint32_t CTCR; 00247 } LPC_PWM_TypeDef; 00248 00249 /*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/ 00250 typedef struct 00251 { 00252 union { 00253 __I uint8_t RBR; 00254 __O uint8_t THR; 00255 __IO uint8_t DLL; 00256 uint32_t RESERVED0; 00257 }; 00258 union { 00259 __IO uint8_t DLM; 00260 __IO uint32_t IER; 00261 }; 00262 union { 00263 __I uint32_t IIR; 00264 __O uint8_t FCR; 00265 }; 00266 __IO uint8_t LCR; 00267 uint8_t RESERVED1[7]; 00268 __IO uint8_t LSR; 00269 uint8_t RESERVED2[7]; 00270 __IO uint8_t SCR; 00271 uint8_t RESERVED3[3]; 00272 __IO uint32_t ACR; 00273 __IO uint8_t ICR; 00274 uint8_t RESERVED4[3]; 00275 __IO uint8_t FDR; 00276 uint8_t RESERVED5[7]; 00277 __IO uint8_t TER; 00278 uint8_t RESERVED6[27]; 00279 __IO uint8_t RS485CTRL; 00280 uint8_t RESERVED7[3]; 00281 __IO uint8_t ADRMATCH; 00282 } LPC_UART_TypeDef; 00283 00284 typedef struct 00285 { 00286 union { 00287 __I uint8_t RBR; 00288 __O uint8_t THR; 00289 __IO uint8_t DLL; 00290 uint32_t RESERVED0; 00291 }; 00292 union { 00293 __IO uint8_t DLM; 00294 __IO uint32_t IER; 00295 }; 00296 union { 00297 __I uint32_t IIR; 00298 __O uint8_t FCR; 00299 }; 00300 __IO uint8_t LCR; 00301 uint8_t RESERVED1[3]; 00302 __IO uint8_t MCR; 00303 uint8_t RESERVED2[3]; 00304 __IO uint8_t LSR; 00305 uint8_t RESERVED3[3]; 00306 __IO uint8_t MSR; 00307 uint8_t RESERVED4[3]; 00308 __IO uint8_t SCR; 00309 uint8_t RESERVED5[3]; 00310 __IO uint32_t ACR; 00311 uint32_t RESERVED6; 00312 __IO uint32_t FDR; 00313 uint32_t RESERVED7; 00314 __IO uint8_t TER; 00315 uint8_t RESERVED8[27]; 00316 __IO uint8_t RS485CTRL; 00317 uint8_t RESERVED9[3]; 00318 __IO uint8_t ADRMATCH; 00319 uint8_t RESERVED10[3]; 00320 __IO uint8_t RS485DLY; 00321 } LPC_UART1_TypeDef; 00322 00323 /*------------- Serial Peripheral Interface (SPI) ----------------------------*/ 00324 typedef struct 00325 { 00326 __IO uint32_t SPCR; 00327 __I uint32_t SPSR; 00328 __IO uint32_t SPDR; 00329 __IO uint32_t SPCCR; 00330 uint32_t RESERVED0[3]; 00331 __IO uint32_t SPINT; 00332 } LPC_SPI_TypeDef; 00333 00334 /*------------- Synchronous Serial Communication (SSP) -----------------------*/ 00335 typedef struct 00336 { 00337 __IO uint32_t CR0; 00338 __IO uint32_t CR1; 00339 __IO uint32_t DR; 00340 __I uint32_t SR; 00341 __IO uint32_t CPSR; 00342 __IO uint32_t IMSC; 00343 __IO uint32_t RIS; 00344 __IO uint32_t MIS; 00345 __IO uint32_t ICR; 00346 __IO uint32_t DMACR; 00347 } LPC_SSP_TypeDef; 00348 00349 /*------------- Inter-Integrated Circuit (I2C) -------------------------------*/ 00350 typedef struct 00351 { 00352 __IO uint32_t I2CONSET; 00353 __I uint32_t I2STAT; 00354 __IO uint32_t I2DAT; 00355 __IO uint32_t I2ADR0; 00356 __IO uint32_t I2SCLH; 00357 __IO uint32_t I2SCLL; 00358 __O uint32_t I2CONCLR; 00359 __IO uint32_t MMCTRL; 00360 __IO uint32_t I2ADR1; 00361 __IO uint32_t I2ADR2; 00362 __IO uint32_t I2ADR3; 00363 __I uint32_t I2DATA_BUFFER; 00364 __IO uint32_t I2MASK0; 00365 __IO uint32_t I2MASK1; 00366 __IO uint32_t I2MASK2; 00367 __IO uint32_t I2MASK3; 00368 } LPC_I2C_TypeDef; 00369 00370 /*------------- Inter IC Sound (I2S) -----------------------------------------*/ 00371 typedef struct 00372 { 00373 __IO uint32_t I2SDAO; 00374 __I uint32_t I2SDAI; 00375 __O uint32_t I2STXFIFO; 00376 __I uint32_t I2SRXFIFO; 00377 __I uint32_t I2SSTATE; 00378 __IO uint32_t I2SDMA1; 00379 __IO uint32_t I2SDMA2; 00380 __IO uint32_t I2SIRQ; 00381 __IO uint32_t I2STXRATE; 00382 __IO uint32_t I2SRXRATE; 00383 __IO uint32_t I2STXBITRATE; 00384 __IO uint32_t I2SRXBITRATE; 00385 __IO uint32_t I2STXMODE; 00386 __IO uint32_t I2SRXMODE; 00387 } LPC_I2S_TypeDef; 00388 00389 /*------------- Real-Time Clock (RTC) ----------------------------------------*/ 00390 typedef struct 00391 { 00392 __IO uint8_t ILR; 00393 uint8_t RESERVED0[3]; 00394 __IO uint8_t CTC; 00395 uint8_t RESERVED1[3]; 00396 __IO uint8_t CCR; 00397 uint8_t RESERVED2[3]; 00398 __IO uint8_t CIIR; 00399 uint8_t RESERVED3[3]; 00400 __IO uint8_t AMR; 00401 uint8_t RESERVED4[3]; 00402 __I uint32_t CTIME0; 00403 __I uint32_t CTIME1; 00404 __I uint32_t CTIME2; 00405 __IO uint8_t SEC; 00406 uint8_t RESERVED5[3]; 00407 __IO uint8_t MIN; 00408 uint8_t RESERVED6[3]; 00409 __IO uint8_t HOUR; 00410 uint8_t RESERVED7[3]; 00411 __IO uint8_t DOM; 00412 uint8_t RESERVED8[3]; 00413 __IO uint8_t DOW; 00414 uint8_t RESERVED9[3]; 00415 __IO uint16_t DOY; 00416 uint16_t RESERVED10; 00417 __IO uint8_t MONTH; 00418 uint8_t RESERVED11[3]; 00419 __IO uint16_t YEAR; 00420 uint16_t RESERVED12; 00421 __IO uint32_t CALIBRATION; 00422 __IO uint32_t GPREG0; 00423 __IO uint32_t GPREG1; 00424 __IO uint32_t GPREG2; 00425 __IO uint32_t GPREG3; 00426 __IO uint32_t GPREG4; 00427 __IO uint8_t WAKEUPDIS; 00428 uint8_t RESERVED13[3]; 00429 __IO uint8_t PWRCTRL; 00430 uint8_t RESERVED14[3]; 00431 __IO uint8_t ALSEC; 00432 uint8_t RESERVED15[3]; 00433 __IO uint8_t ALMIN; 00434 uint8_t RESERVED16[3]; 00435 __IO uint8_t ALHOUR; 00436 uint8_t RESERVED17[3]; 00437 __IO uint8_t ALDOM; 00438 uint8_t RESERVED18[3]; 00439 __IO uint8_t ALDOW; 00440 uint8_t RESERVED19[3]; 00441 __IO uint16_t ALDOY; 00442 uint16_t RESERVED20; 00443 __IO uint8_t ALMON; 00444 uint8_t RESERVED21[3]; 00445 __IO uint16_t ALYEAR; 00446 uint16_t RESERVED22; 00447 } LPC_RTC_TypeDef; 00448 00449 /*------------- Watchdog Timer (WDT) -----------------------------------------*/ 00450 typedef struct 00451 { 00452 __IO uint8_t WDMOD; 00453 uint8_t RESERVED0[3]; 00454 __IO uint32_t WDTC; 00455 __O uint8_t WDFEED; 00456 uint8_t RESERVED1[3]; 00457 __I uint32_t WDTV; 00458 __IO uint32_t WDCLKSEL; 00459 } LPC_WDT_TypeDef; 00460 00461 /*------------- Analog-to-Digital Converter (ADC) ----------------------------*/ 00462 typedef struct 00463 { 00464 __IO uint32_t ADCR; 00465 __IO uint32_t ADGDR; 00466 uint32_t RESERVED0; 00467 __IO uint32_t ADINTEN; 00468 __I uint32_t ADDR0; 00469 __I uint32_t ADDR1; 00470 __I uint32_t ADDR2; 00471 __I uint32_t ADDR3; 00472 __I uint32_t ADDR4; 00473 __I uint32_t ADDR5; 00474 __I uint32_t ADDR6; 00475 __I uint32_t ADDR7; 00476 __I uint32_t ADSTAT; 00477 __IO uint32_t ADTRM; 00478 } LPC_ADC_TypeDef; 00479 00480 /*------------- Digital-to-Analog Converter (DAC) ----------------------------*/ 00481 typedef struct 00482 { 00483 __IO uint32_t DACR; 00484 __IO uint32_t DACCTRL; 00485 __IO uint16_t DACCNTVAL; 00486 } LPC_DAC_TypeDef; 00487 00488 /*------------- Multimedia Card Interface (MCI) ------------------------------*/ 00489 typedef struct 00490 { 00491 __IO uint32_t MCIPower; /* Power control */ 00492 __IO uint32_t MCIClock; /* Clock control */ 00493 __IO uint32_t MCIArgument; 00494 __IO uint32_t MMCCommand; 00495 __I uint32_t MCIRespCmd; 00496 __I uint32_t MCIResponse0; 00497 __I uint32_t MCIResponse1; 00498 __I uint32_t MCIResponse2; 00499 __I uint32_t MCIResponse3; 00500 __IO uint32_t MCIDataTimer; 00501 __IO uint32_t MCIDataLength; 00502 __IO uint32_t MCIDataCtrl; 00503 __I uint32_t MCIDataCnt; 00504 } LPC_MCI_TypeDef; 00505 00506 /*------------- Controller Area Network (CAN) --------------------------------*/ 00507 typedef struct 00508 { 00509 __IO uint32_t mask[512]; /* ID Masks */ 00510 } LPC_CANAF_RAM_TypeDef; 00511 00512 typedef struct /* Acceptance Filter Registers */ 00513 { 00514 __IO uint32_t AFMR; 00515 __IO uint32_t SFF_sa; 00516 __IO uint32_t SFF_GRP_sa; 00517 __IO uint32_t EFF_sa; 00518 __IO uint32_t EFF_GRP_sa; 00519 __IO uint32_t ENDofTable; 00520 __I uint32_t LUTerrAd; 00521 __I uint32_t LUTerr; 00522 } LPC_CANAF_TypeDef; 00523 00524 typedef struct /* Central Registers */ 00525 { 00526 __I uint32_t CANTxSR; 00527 __I uint32_t CANRxSR; 00528 __I uint32_t CANMSR; 00529 } LPC_CANCR_TypeDef; 00530 00531 typedef struct /* Controller Registers */ 00532 { 00533 __IO uint32_t MOD; 00534 __O uint32_t CMR; 00535 __IO uint32_t GSR; 00536 __I uint32_t ICR; 00537 __IO uint32_t IER; 00538 __IO uint32_t BTR; 00539 __IO uint32_t EWL; 00540 __I uint32_t SR; 00541 __IO uint32_t RFS; 00542 __IO uint32_t RID; 00543 __IO uint32_t RDA; 00544 __IO uint32_t RDB; 00545 __IO uint32_t TFI1; 00546 __IO uint32_t TID1; 00547 __IO uint32_t TDA1; 00548 __IO uint32_t TDB1; 00549 __IO uint32_t TFI2; 00550 __IO uint32_t TID2; 00551 __IO uint32_t TDA2; 00552 __IO uint32_t TDB2; 00553 __IO uint32_t TFI3; 00554 __IO uint32_t TID3; 00555 __IO uint32_t TDA3; 00556 __IO uint32_t TDB3; 00557 } LPC_CAN_TypeDef; 00558 00559 /*------------- General Purpose Direct Memory Access (GPDMA) -----------------*/ 00560 typedef struct /* Common Registers */ 00561 { 00562 __I uint32_t DMACIntStat; 00563 __I uint32_t DMACIntTCStat; 00564 __O uint32_t DMACIntTCClear; 00565 __I uint32_t DMACIntErrStat; 00566 __O uint32_t DMACIntErrClr; 00567 __I uint32_t DMACRawIntTCStat; 00568 __I uint32_t DMACRawIntErrStat; 00569 __I uint32_t DMACEnbldChns; 00570 __IO uint32_t DMACSoftBReq; 00571 __IO uint32_t DMACSoftSReq; 00572 __IO uint32_t DMACSoftLBReq; 00573 __IO uint32_t DMACSoftLSReq; 00574 __IO uint32_t DMACConfig; 00575 __IO uint32_t DMACSync; 00576 } LPC_GPDMA_TypeDef; 00577 00578 typedef struct /* Channel Registers */ 00579 { 00580 __IO uint32_t DMACCSrcAddr; 00581 __IO uint32_t DMACCDestAddr; 00582 __IO uint32_t DMACCLLI; 00583 __IO uint32_t DMACCControl; 00584 __IO uint32_t DMACCConfig; 00585 } LPC_GPDMACH_TypeDef; 00586 00587 /*------------- Universal Serial Bus (USB) -----------------------------------*/ 00588 typedef struct 00589 { 00590 __I uint32_t HcRevision; /* USB Host Registers */ 00591 __IO uint32_t HcControl; 00592 __IO uint32_t HcCommandStatus; 00593 __IO uint32_t HcInterruptStatus; 00594 __IO uint32_t HcInterruptEnable; 00595 __IO uint32_t HcInterruptDisable; 00596 __IO uint32_t HcHCCA; 00597 __I uint32_t HcPeriodCurrentED; 00598 __IO uint32_t HcControlHeadED; 00599 __IO uint32_t HcControlCurrentED; 00600 __IO uint32_t HcBulkHeadED; 00601 __IO uint32_t HcBulkCurrentED; 00602 __I uint32_t HcDoneHead; 00603 __IO uint32_t HcFmInterval; 00604 __I uint32_t HcFmRemaining; 00605 __I uint32_t HcFmNumber; 00606 __IO uint32_t HcPeriodicStart; 00607 __IO uint32_t HcLSTreshold; 00608 __IO uint32_t HcRhDescriptorA; 00609 __IO uint32_t HcRhDescriptorB; 00610 __IO uint32_t HcRhStatus; 00611 __IO uint32_t HcRhPortStatus1; 00612 __IO uint32_t HcRhPortStatus2; 00613 uint32_t RESERVED0[40]; 00614 __I uint32_t Module_ID; 00615 00616 __I uint32_t OTGIntSt; /* USB On-The-Go Registers */ 00617 __IO uint32_t OTGIntEn; 00618 __O uint32_t OTGIntSet; 00619 __O uint32_t OTGIntClr; 00620 __IO uint32_t OTGStCtrl; 00621 __IO uint32_t OTGTmr; 00622 uint32_t RESERVED1[58]; 00623 00624 __I uint32_t USBDevIntSt; /* USB Device Interrupt Registers */ 00625 __IO uint32_t USBDevIntEn; 00626 __O uint32_t USBDevIntClr; 00627 __O uint32_t USBDevIntSet; 00628 00629 __O uint32_t USBCmdCode; /* USB Device SIE Command Registers */ 00630 __I uint32_t USBCmdData; 00631 00632 __I uint32_t USBRxData; /* USB Device Transfer Registers */ 00633 __O uint32_t USBTxData; 00634 __I uint32_t USBRxPLen; 00635 __O uint32_t USBTxPLen; 00636 __IO uint32_t USBCtrl; 00637 __O uint32_t USBDevIntPri; 00638 00639 __I uint32_t USBEpIntSt; /* USB Device Endpoint Interrupt Regs */ 00640 __IO uint32_t USBEpIntEn; 00641 __O uint32_t USBEpIntClr; 00642 __O uint32_t USBEpIntSet; 00643 __O uint32_t USBEpIntPri; 00644 00645 __IO uint32_t USBReEp; /* USB Device Endpoint Realization Reg*/ 00646 __O uint32_t USBEpInd; 00647 __IO uint32_t USBMaxPSize; 00648 00649 __I uint32_t USBDMARSt; /* USB Device DMA Registers */ 00650 __O uint32_t USBDMARClr; 00651 __O uint32_t USBDMARSet; 00652 uint32_t RESERVED2[9]; 00653 __IO uint32_t USBUDCAH; 00654 __I uint32_t USBEpDMASt; 00655 __O uint32_t USBEpDMAEn; 00656 __O uint32_t USBEpDMADis; 00657 __I uint32_t USBDMAIntSt; 00658 __IO uint32_t USBDMAIntEn; 00659 uint32_t RESERVED3[2]; 00660 __I uint32_t USBEoTIntSt; 00661 __O uint32_t USBEoTIntClr; 00662 __O uint32_t USBEoTIntSet; 00663 __I uint32_t USBNDDRIntSt; 00664 __O uint32_t USBNDDRIntClr; 00665 __O uint32_t USBNDDRIntSet; 00666 __I uint32_t USBSysErrIntSt; 00667 __O uint32_t USBSysErrIntClr; 00668 __O uint32_t USBSysErrIntSet; 00669 uint32_t RESERVED4[15]; 00670 00671 __I uint32_t I2C_RX; /* USB OTG I2C Registers */ 00672 __O uint32_t I2C_WO; 00673 __I uint32_t I2C_STS; 00674 __IO uint32_t I2C_CTL; 00675 __IO uint32_t I2C_CLKHI; 00676 __O uint32_t I2C_CLKLO; 00677 uint32_t RESERVED5[823]; 00678 00679 union { 00680 __IO uint32_t USBClkCtrl; /* USB Clock Control Registers */ 00681 __IO uint32_t OTGClkCtrl; 00682 }; 00683 union { 00684 __I uint32_t USBClkSt; 00685 __I uint32_t OTGClkSt; 00686 }; 00687 } LPC_USB_TypeDef; 00688 00689 /*------------- Ethernet Media Access Controller (EMAC) ----------------------*/ 00690 typedef struct 00691 { 00692 __IO uint32_t MAC1; /* MAC Registers */ 00693 __IO uint32_t MAC2; 00694 __IO uint32_t IPGT; 00695 __IO uint32_t IPGR; 00696 __IO uint32_t CLRT; 00697 __IO uint32_t MAXF; 00698 __IO uint32_t SUPP; 00699 __IO uint32_t TEST; 00700 __IO uint32_t MCFG; 00701 __IO uint32_t MCMD; 00702 __IO uint32_t MADR; 00703 __O uint32_t MWTD; 00704 __I uint32_t MRDD; 00705 __I uint32_t MIND; 00706 uint32_t RESERVED0[2]; 00707 __IO uint32_t SA0; 00708 __IO uint32_t SA1; 00709 __IO uint32_t SA2; 00710 uint32_t RESERVED1[45]; 00711 __IO uint32_t Command; /* Control Registers */ 00712 __I uint32_t Status; 00713 __IO uint32_t RxDescriptor; 00714 __IO uint32_t RxStatus; 00715 __IO uint32_t RxDescriptorNumber; 00716 __I uint32_t RxProduceIndex; 00717 __IO uint32_t RxConsumeIndex; 00718 __IO uint32_t TxDescriptor; 00719 __IO uint32_t TxStatus; 00720 __IO uint32_t TxDescriptorNumber; 00721 __IO uint32_t TxProduceIndex; 00722 __I uint32_t TxConsumeIndex; 00723 uint32_t RESERVED2[10]; 00724 __I uint32_t TSV0; 00725 __I uint32_t TSV1; 00726 __I uint32_t RSV; 00727 uint32_t RESERVED3[3]; 00728 __IO uint32_t FlowControlCounter; 00729 __I uint32_t FlowControlStatus; 00730 uint32_t RESERVED4[34]; 00731 __IO uint32_t RxFilterCtrl; /* Rx Filter Registers */ 00732 __IO uint32_t RxFilterWoLStatus; 00733 __IO uint32_t RxFilterWoLClear; 00734 uint32_t RESERVED5; 00735 __IO uint32_t HashFilterL; 00736 __IO uint32_t HashFilterH; 00737 uint32_t RESERVED6[882]; 00738 __I uint32_t IntStatus; /* Module Control Registers */ 00739 __IO uint32_t IntEnable; 00740 __O uint32_t IntClear; 00741 __O uint32_t IntSet; 00742 uint32_t RESERVED7; 00743 __IO uint32_t PowerDown; 00744 uint32_t RESERVED8; 00745 __IO uint32_t Module_ID; 00746 } LPC_EMAC_TypeDef; 00747 00748 #if defined ( __CC_ARM ) 00749 #pragma no_anon_unions 00750 #endif 00751 00752 /******************************************************************************/ 00753 /* Peripheral memory map */ 00754 /******************************************************************************/ 00755 /* Base addresses */ 00756 00757 /* AHB Peripheral # 0 */ 00758 00759 /* 00760 #define FLASH_BASE (0x00000000UL) 00761 #define RAM_BASE (0x10000000UL) 00762 #define GPIO_BASE (0x2009C000UL) 00763 #define APB0_BASE (0x40000000UL) 00764 #define APB1_BASE (0x40080000UL) 00765 #define AHB_BASE (0x50000000UL) 00766 #define CM3_BASE (0xE0000000UL) 00767 */ 00768 00769 // TODO - #define VIC_BASE_ADDR 0xFFFFF000 00770 00771 #define LPC_WDT_BASE (0xE0000000) 00772 #define LPC_TIM0_BASE (0xE0004000) 00773 #define LPC_TIM1_BASE (0xE0008000) 00774 #define LPC_UART0_BASE (0xE000C000) 00775 #define LPC_UART1_BASE (0xE0010000) 00776 #define LPC_PWM1_BASE (0xE0018000) 00777 #define LPC_I2C0_BASE (0xE001C000) 00778 #define LPC_SPI_BASE (0xE0020000) 00779 #define LPC_RTC_BASE (0xE0024000) 00780 #define LPC_GPIOINT_BASE (0xE0028080) 00781 #define LPC_PINCON_BASE (0xE002C000) 00782 #define LPC_SSP1_BASE (0xE0030000) 00783 #define LPC_ADC_BASE (0xE0034000) 00784 #define LPC_CANAF_RAM_BASE (0xE0038000) 00785 #define LPC_CANAF_BASE (0xE003C000) 00786 #define LPC_CANCR_BASE (0xE0040000) 00787 #define LPC_CAN1_BASE (0xE0044000) 00788 #define LPC_CAN2_BASE (0xE0048000) 00789 #define LPC_I2C1_BASE (0xE005C000) 00790 #define LPC_SSP0_BASE (0xE0068000) 00791 #define LPC_DAC_BASE (0xE006C000) 00792 #define LPC_TIM2_BASE (0xE0070000) 00793 #define LPC_TIM3_BASE (0xE0074000) 00794 #define LPC_UART2_BASE (0xE0078000) 00795 #define LPC_UART3_BASE (0xE007C000) 00796 #define LPC_I2C2_BASE (0xE0080000) 00797 #define LPC_I2S_BASE (0xE0088000) 00798 #define LPC_MCI_BASE (0xE008C000) 00799 #define LPC_SC_BASE (0xE01FC000) 00800 #define LPC_EMAC_BASE (0xFFE00000) 00801 #define LPC_GPDMA_BASE (0xFFE04000) 00802 #define LPC_GPDMACH0_BASE (0xFFE04100) 00803 #define LPC_GPDMACH1_BASE (0xFFE04120) 00804 #define LPC_USB_BASE (0xFFE0C000) 00805 #define LPC_VIC_BASE (0xFFFFF000) 00806 00807 /* GPIOs */ 00808 #define LPC_GPIO0_BASE (0x3FFFC000) 00809 #define LPC_GPIO1_BASE (0x3FFFC020) 00810 #define LPC_GPIO2_BASE (0x3FFFC040) 00811 #define LPC_GPIO3_BASE (0x3FFFC060) 00812 #define LPC_GPIO4_BASE (0x3FFFC080) 00813 00814 00815 /******************************************************************************/ 00816 /* Peripheral declaration */ 00817 /******************************************************************************/ 00818 #define LPC_SC (( LPC_SC_TypeDef *) LPC_SC_BASE) 00819 #define LPC_GPIO0 (( LPC_GPIO_TypeDef *) LPC_GPIO0_BASE) 00820 #define LPC_GPIO1 (( LPC_GPIO_TypeDef *) LPC_GPIO1_BASE) 00821 #define LPC_GPIO2 (( LPC_GPIO_TypeDef *) LPC_GPIO2_BASE) 00822 #define LPC_GPIO3 (( LPC_GPIO_TypeDef *) LPC_GPIO3_BASE) 00823 #define LPC_GPIO4 (( LPC_GPIO_TypeDef *) LPC_GPIO4_BASE) 00824 #define LPC_WDT (( LPC_WDT_TypeDef *) LPC_WDT_BASE) 00825 #define LPC_TIM0 (( LPC_TIM_TypeDef *) LPC_TIM0_BASE) 00826 #define LPC_TIM1 (( LPC_TIM_TypeDef *) LPC_TIM1_BASE) 00827 #define LPC_TIM2 (( LPC_TIM_TypeDef *) LPC_TIM2_BASE) 00828 #define LPC_TIM3 (( LPC_TIM_TypeDef *) LPC_TIM3_BASE) 00829 #define LPC_UART0 (( LPC_UART_TypeDef *) LPC_UART0_BASE) 00830 #define LPC_UART1 (( LPC_UART1_TypeDef *) LPC_UART1_BASE) 00831 #define LPC_UART2 (( LPC_UART_TypeDef *) LPC_UART2_BASE) 00832 #define LPC_UART3 (( LPC_UART_TypeDef *) LPC_UART3_BASE) 00833 #define LPC_PWM1 (( LPC_PWM_TypeDef *) LPC_PWM1_BASE) 00834 #define LPC_I2C0 (( LPC_I2C_TypeDef *) LPC_I2C0_BASE) 00835 #define LPC_I2C1 (( LPC_I2C_TypeDef *) LPC_I2C1_BASE) 00836 #define LPC_I2C2 (( LPC_I2C_TypeDef *) LPC_I2C2_BASE) 00837 #define LPC_I2S (( LPC_I2S_TypeDef *) LPC_I2S_BASE) 00838 #define LPC_SPI (( LPC_SPI_TypeDef *) LPC_SPI_BASE) 00839 #define LPC_RTC (( LPC_RTC_TypeDef *) LPC_RTC_BASE) 00840 #define LPC_GPIOINT (( LPC_GPIOINT_TypeDef *) LPC_GPIOINT_BASE) 00841 #define LPC_PINCON (( LPC_PINCON_TypeDef *) LPC_PINCON_BASE) 00842 #define LPC_SSP0 (( LPC_SSP_TypeDef *) LPC_SSP0_BASE) 00843 #define LPC_SSP1 (( LPC_SSP_TypeDef *) LPC_SSP1_BASE) 00844 #define LPC_ADC (( LPC_ADC_TypeDef *) LPC_ADC_BASE) 00845 #define LPC_DAC (( LPC_DAC_TypeDef *) LPC_DAC_BASE) 00846 #define LPC_CANAF_RAM ((LPC_CANAF_RAM_TypeDef *) LPC_CANAF_RAM_BASE) 00847 #define LPC_CANAF (( LPC_CANAF_TypeDef *) LPC_CANAF_BASE) 00848 #define LPC_CANCR (( LPC_CANCR_TypeDef *) LPC_CANCR_BASE) 00849 #define LPC_CAN1 (( LPC_CAN_TypeDef *) LPC_CAN1_BASE) 00850 #define LPC_CAN2 (( LPC_CAN_TypeDef *) LPC_CAN2_BASE) 00851 #define LPC_MCI (( LPC_MCI_TypeDef *) LPC_MCI_BASE) 00852 #define LPC_EMAC (( LPC_EMAC_TypeDef *) LPC_EMAC_BASE) 00853 #define LPC_GPDMA (( LPC_GPDMA_TypeDef *) LPC_GPDMA_BASE) 00854 #define LPC_GPDMACH0 (( LPC_GPDMACH_TypeDef *) LPC_GPDMACH0_BASE) 00855 #define LPC_GPDMACH1 (( LPC_GPDMACH_TypeDef *) LPC_GPDMACH1_BASE) 00856 #define LPC_USB (( LPC_USB_TypeDef *) LPC_USB_BASE) 00857 #define LPC_VIC (( LPC_VIC_TypeDef *) LPC_VIC_BASE) 00858 00859 #ifdef __cplusplus 00860 } 00861 #endif 00862 00863 #endif // __LPC23xx_H 00864
Generated on Tue Jul 12 2022 20:12:25 by
1.7.2