You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1144 lines
51 KiB
C

/*-------------------------------------------------------------------*/
/* LPC176x Register Definitions and Cortex-M3 Supplement Definitions */
/* This file is a non-copyrighted public domain software */
/*-------------------------------------------------------------------*/
#ifndef __LPC176x
#define __LPC176x
#include <stdint.h>
#define USE_SV_SERVICE 0 /* Enable supervisor service for user mode task */
/* System Controls */
#define EXTINT (*(volatile uint32_t*)0x400FC140)
#define EXTMODE (*(volatile uint32_t*)0x400FC148)
#define EXTPOLAR (*(volatile uint32_t*)0x400FC14C)
#define RSID (*(volatile uint32_t*)0x400FC180)
#define SCS (*(volatile uint32_t*)0x400FC1A0)
/* Clocking and Power Controls */
#define CLKSRCSEL (*(volatile uint32_t*)0x400FC10C)
#define PLL0CON (*(volatile uint32_t*)0x400FC080)
#define PLL0CFG (*(volatile uint32_t*)0x400FC084)
#define PLL0STAT (*(volatile uint32_t*)0x400FC088)
#define PLL0FEED (*(volatile uint32_t*)0x400FC08C)
#define PLL1CON (*(volatile uint32_t*)0x400FC0A0)
#define PLL1CFG (*(volatile uint32_t*)0x400FC0A4)
#define PLL1STAT (*(volatile uint32_t*)0x400FC0A8)
#define PLL1FEED (*(volatile uint32_t*)0x400FC0AC)
#define CCLKCFG (*(volatile uint32_t*)0x400FC104)
#define USBCLKCFG (*(volatile uint32_t*)0x400FC108)
#define PCLKSEL ( (volatile uint32_t*)0x400FC1A8)
#define PCLKSEL0 (*(volatile uint32_t*)0x400FC1A8)
#define PCLKSEL1 (*(volatile uint32_t*)0x400FC1AC)
#define PCON (*(volatile uint32_t*)0x400FC0C0)
#define PCONP (*(volatile uint32_t*)0x400FC0C4)
#define CLKOUTCFG (*(volatile uint32_t*)0x400FC1C8)
/* Flash Accelerator */
#define FLASHCFG (*(volatile uint32_t*)0x400FC000)
/* Pin Configurations */
#define PINSEL ( (volatile uint32_t*)0x4002C000)
#define PINSEL0 (*(volatile uint32_t*)0x4002C000)
#define PINSEL1 (*(volatile uint32_t*)0x4002C004)
#define PINSEL2 (*(volatile uint32_t*)0x4002C008)
#define PINSEL3 (*(volatile uint32_t*)0x4002C00C)
#define PINSEL4 (*(volatile uint32_t*)0x4002C010)
#define PINSEL7 (*(volatile uint32_t*)0x4002C01C)
#define PINSEL8 (*(volatile uint32_t*)0x4002C020)
#define PINSEL9 (*(volatile uint32_t*)0x4002C024)
#define PINSEL10 (*(volatile uint32_t*)0x4002C028)
#define PINMODE ( (volatile uint32_t*)0x4002C040)
#define PINMODE0 (*(volatile uint32_t*)0x4002C040)
#define PINMODE1 (*(volatile uint32_t*)0x4002C044)
#define PINMODE2 (*(volatile uint32_t*)0x4002C048)
#define PINMODE3 (*(volatile uint32_t*)0x4002C04C)
#define PINMODE4 (*(volatile uint32_t*)0x4002C050)
#define PINMODE5 (*(volatile uint32_t*)0x4002C054)
#define PINMODE6 (*(volatile uint32_t*)0x4002C058)
#define PINMODE7 (*(volatile uint32_t*)0x4002C05C)
#define PINMODE9 (*(volatile uint32_t*)0x4002C064)
#define PINMODE_OD ( (volatile uint32_t*)0x4002C068)
#define PINMODE_OD0 (*(volatile uint32_t*)0x4002C068)
#define PINMODE_OD1 (*(volatile uint32_t*)0x4002C06C)
#define PINMODE_OD2 (*(volatile uint32_t*)0x4002C070)
#define PINMODE_OD3 (*(volatile uint32_t*)0x4002C074)
#define PINMODE_OD4 (*(volatile uint32_t*)0x4002C078)
#define I2CPADCFG (*(volatile uint32_t*)0x4002C07C)
/* GPIO */
#define FIO0DIR (*(volatile uint32_t*)0x2009C000)
#define FIO0DIRL (*(volatile uint16_t*)0x2009C000)
#define FIO0DIRH (*(volatile uint16_t*)0x2009C002)
#define FIO0DIR0 (*(volatile uint8_t*)0x2009C000)
#define FIO0DIR1 (*(volatile uint8_t*)0x2009C001)
#define FIO0DIR2 (*(volatile uint8_t*)0x2009C002)
#define FIO0DIR3 (*(volatile uint8_t*)0x2009C003)
#define FIO1DIR (*(volatile uint32_t*)0x2009C020)
#define FIO1DIRL (*(volatile uint16_t*)0x2009C020)
#define FIO1DIRH (*(volatile uint16_t*)0x2009C022)
#define FIO1DIR0 (*(volatile uint8_t*)0x2009C020)
#define FIO1DIR1 (*(volatile uint8_t*)0x2009C021)
#define FIO1DIR2 (*(volatile uint8_t*)0x2009C022)
#define FIO1DIR3 (*(volatile uint8_t*)0x2009C023)
#define FIO2DIR (*(volatile uint32_t*)0x2009C040)
#define FIO2DIRL (*(volatile uint16_t*)0x2009C040)
#define FIO2DIRH (*(volatile uint16_t*)0x2009C042)
#define FIO2DIR0 (*(volatile uint8_t*)0x2009C040)
#define FIO2DIR1 (*(volatile uint8_t*)0x2009C041)
#define FIO2DIR2 (*(volatile uint8_t*)0x2009C042)
#define FIO2DIR3 (*(volatile uint8_t*)0x2009C043)
#define FIO3DIR (*(volatile uint32_t*)0x2009C060)
#define FIO3DIRL (*(volatile uint16_t*)0x2009C060)
#define FIO3DIRH (*(volatile uint16_t*)0x2009C062)
#define FIO3DIR0 (*(volatile uint8_t*)0x2009C060)
#define FIO3DIR1 (*(volatile uint8_t*)0x2009C061)
#define FIO3DIR2 (*(volatile uint8_t*)0x2009C062)
#define FIO3DIR3 (*(volatile uint8_t*)0x2009C063)
#define FIO4DIR (*(volatile uint32_t*)0x2009C080)
#define FIO4DIRL (*(volatile uint16_t*)0x2009C080)
#define FIO4DIRH (*(volatile uint16_t*)0x2009C082)
#define FIO4DIR0 (*(volatile uint8_t*)0x2009C080)
#define FIO4DIR1 (*(volatile uint8_t*)0x2009C081)
#define FIO4DIR2 (*(volatile uint8_t*)0x2009C082)
#define FIO4DIR3 (*(volatile uint8_t*)0x2009C083)
#define FIO0MASK (*(volatile uint32_t*)0x2009C010)
#define FIO0MASKL (*(volatile uint16_t*)0x2009C010)
#define FIO0MASKH (*(volatile uint16_t*)0x2009C012)
#define FIO0MASK0 (*(volatile uint8_t*)0x2009C010)
#define FIO0MASK1 (*(volatile uint8_t*)0x2009C011)
#define FIO0MASK2 (*(volatile uint8_t*)0x2009C012)
#define FIO0MASK3 (*(volatile uint8_t*)0x2009C013)
#define FIO1MASK (*(volatile uint32_t*)0x2009C030)
#define FIO1MASKL (*(volatile uint16_t*)0x2009C030)
#define FIO1MASKH (*(volatile uint16_t*)0x2009C032)
#define FIO1MASK0 (*(volatile uint8_t*)0x2009C030)
#define FIO1MASK1 (*(volatile uint8_t*)0x2009C031)
#define FIO1MASK2 (*(volatile uint8_t*)0x2009C032)
#define FIO1MASK3 (*(volatile uint8_t*)0x2009C033)
#define FIO2MASK (*(volatile uint32_t*)0x2009C050)
#define FIO2MASKL (*(volatile uint16_t*)0x2009C050)
#define FIO2MASKH (*(volatile uint16_t*)0x2009C052)
#define FIO2MASK0 (*(volatile uint8_t*)0x2009C050)
#define FIO2MASK1 (*(volatile uint8_t*)0x2009C051)
#define FIO2MASK2 (*(volatile uint8_t*)0x2009C052)
#define FIO2MASK3 (*(volatile uint8_t*)0x2009C053)
#define FIO3MASK (*(volatile uint32_t*)0x2009C070)
#define FIO3MASKL (*(volatile uint16_t*)0x2009C070)
#define FIO3MASKH (*(volatile uint16_t*)0x2009C072)
#define FIO3MASK0 (*(volatile uint8_t*)0x2009C070)
#define FIO3MASK1 (*(volatile uint8_t*)0x2009C071)
#define FIO3MASK2 (*(volatile uint8_t*)0x2009C072)
#define FIO3MASK3 (*(volatile uint8_t*)0x2009C073)
#define FIO4MASK (*(volatile uint32_t*)0x2009C090)
#define FIO4MASKL (*(volatile uint16_t*)0x2009C090)
#define FIO4MASKH (*(volatile uint16_t*)0x2009C092)
#define FIO4MASK0 (*(volatile uint8_t*)0x2009C090)
#define FIO4MASK1 (*(volatile uint8_t*)0x2009C091)
#define FIO4MASK2 (*(volatile uint8_t*)0x2009C092)
#define FIO4MASK3 (*(volatile uint8_t*)0x2009C093)
#define FIO0PIN (*(volatile uint32_t*)0x2009C014)
#define FIO0PINL (*(volatile uint16_t*)0x2009C014)
#define FIO0PINH (*(volatile uint16_t*)0x2009C016)
#define FIO0PIN0 (*(volatile uint8_t*)0x2009C014)
#define FIO0PIN1 (*(volatile uint8_t*)0x2009C015)
#define FIO0PIN2 (*(volatile uint8_t*)0x2009C016)
#define FIO0PIN3 (*(volatile uint8_t*)0x2009C017)
#define FIO1PIN (*(volatile uint32_t*)0x2009C034)
#define FIO1PINL (*(volatile uint16_t*)0x2009C034)
#define FIO1PINH (*(volatile uint16_t*)0x2009C036)
#define FIO1PIN0 (*(volatile uint8_t*)0x2009C034)
#define FIO1PIN1 (*(volatile uint8_t*)0x2009C035)
#define FIO1PIN2 (*(volatile uint8_t*)0x2009C036)
#define FIO1PIN3 (*(volatile uint8_t*)0x2009C037)
#define FIO2PIN (*(volatile uint32_t*)0x2009C054)
#define FIO2PINL (*(volatile uint16_t*)0x2009C054)
#define FIO2PINH (*(volatile uint16_t*)0x2009C056)
#define FIO2PIN0 (*(volatile uint8_t*)0x2009C054)
#define FIO2PIN1 (*(volatile uint8_t*)0x2009C055)
#define FIO2PIN2 (*(volatile uint8_t*)0x2009C056)
#define FIO2PIN3 (*(volatile uint8_t*)0x2009C057)
#define FIO3PIN (*(volatile uint32_t*)0x2009C074)
#define FIO3PINL (*(volatile uint16_t*)0x2009C074)
#define FIO3PINH (*(volatile uint16_t*)0x2009C076)
#define FIO3PIN0 (*(volatile uint8_t*)0x2009C074)
#define FIO3PIN1 (*(volatile uint8_t*)0x2009C075)
#define FIO3PIN2 (*(volatile uint8_t*)0x2009C076)
#define FIO3PIN3 (*(volatile uint8_t*)0x2009C077)
#define FIO4PIN (*(volatile uint32_t*)0x2009C094)
#define FIO4PINL (*(volatile uint16_t*)0x2009C094)
#define FIO4PINH (*(volatile uint16_t*)0x2009C096)
#define FIO4PIN0 (*(volatile uint8_t*)0x2009C094)
#define FIO4PIN1 (*(volatile uint8_t*)0x2009C095)
#define FIO4PIN2 (*(volatile uint8_t*)0x2009C096)
#define FIO4PIN3 (*(volatile uint8_t*)0x2009C097)
#define FIO0SET (*(volatile uint32_t*)0x2009C018)
#define FIO0SETL (*(volatile uint16_t*)0x2009C018)
#define FIO0SETH (*(volatile uint16_t*)0x2009C01A)
#define FIO0SET0 (*(volatile uint8_t*)0x2009C018)
#define FIO0SET1 (*(volatile uint8_t*)0x2009C019)
#define FIO0SET2 (*(volatile uint8_t*)0x2009C01A)
#define FIO0SET3 (*(volatile uint8_t*)0x2009C01B)
#define FIO1SET (*(volatile uint32_t*)0x2009C038)
#define FIO1SETL (*(volatile uint16_t*)0x2009C038)
#define FIO1SETH (*(volatile uint16_t*)0x2009C03A)
#define FIO1SET0 (*(volatile uint8_t*)0x2009C038)
#define FIO1SET1 (*(volatile uint8_t*)0x2009C039)
#define FIO1SET2 (*(volatile uint8_t*)0x2009C03A)
#define FIO1SET3 (*(volatile uint8_t*)0x2009C03B)
#define FIO2SET (*(volatile uint32_t*)0x2009C058)
#define FIO2SETL (*(volatile uint16_t*)0x2009C058)
#define FIO2SETH (*(volatile uint16_t*)0x2009C05A)
#define FIO2SET0 (*(volatile uint8_t*)0x2009C058)
#define FIO2SET1 (*(volatile uint8_t*)0x2009C059)
#define FIO2SET2 (*(volatile uint8_t*)0x2009C05A)
#define FIO2SET3 (*(volatile uint8_t*)0x2009C05B)
#define FIO3SET (*(volatile uint32_t*)0x2009C078)
#define FIO3SETL (*(volatile uint16_t*)0x2009C078)
#define FIO3SETH (*(volatile uint16_t*)0x2009C07A)
#define FIO3SET0 (*(volatile uint8_t*)0x2009C078)
#define FIO3SET1 (*(volatile uint8_t*)0x2009C079)
#define FIO3SET2 (*(volatile uint8_t*)0x2009C07A)
#define FIO3SET3 (*(volatile uint8_t*)0x2009C07B)
#define FIO4SET (*(volatile uint32_t*)0x2009C098)
#define FIO4SETL (*(volatile uint16_t*)0x2009C098)
#define FIO4SETH (*(volatile uint16_t*)0x2009C09A)
#define FIO4SET0 (*(volatile uint8_t*)0x2009C098)
#define FIO4SET1 (*(volatile uint8_t*)0x2009C099)
#define FIO4SET2 (*(volatile uint8_t*)0x2009C09A)
#define FIO4SET3 (*(volatile uint8_t*)0x2009C09B)
#define FIO0CLR (*(volatile uint32_t*)0x2009C01C)
#define FIO0CLRL (*(volatile uint16_t*)0x2009C01C)
#define FIO0CLRH (*(volatile uint16_t*)0x2009C01E)
#define FIO0CLR0 (*(volatile uint8_t*)0x2009C01C)
#define FIO0CLR1 (*(volatile uint8_t*)0x2009C01D)
#define FIO0CLR2 (*(volatile uint8_t*)0x2009C01E)
#define FIO0CLR3 (*(volatile uint8_t*)0x2009C01F)
#define FIO1CLR (*(volatile uint32_t*)0x2009C03C)
#define FIO1CLRL (*(volatile uint16_t*)0x2009C03C)
#define FIO1CLRH (*(volatile uint16_t*)0x2009C03E)
#define FIO1CLR0 (*(volatile uint8_t*)0x2009C03C)
#define FIO1CLR1 (*(volatile uint8_t*)0x2009C03D)
#define FIO1CLR2 (*(volatile uint8_t*)0x2009C03E)
#define FIO1CLR3 (*(volatile uint8_t*)0x2009C03F)
#define FIO2CLR (*(volatile uint32_t*)0x2009C05C)
#define FIO2CLRL (*(volatile uint16_t*)0x2009C05C)
#define FIO2CLRH (*(volatile uint16_t*)0x2009C05E)
#define FIO2CLR0 (*(volatile uint8_t*)0x2009C05C)
#define FIO2CLR1 (*(volatile uint8_t*)0x2009C05D)
#define FIO2CLR2 (*(volatile uint8_t*)0x2009C05E)
#define FIO2CLR3 (*(volatile uint8_t*)0x2009C05F)
#define FIO3CLR (*(volatile uint32_t*)0x2009C07C)
#define FIO3CLRL (*(volatile uint16_t*)0x2009C07C)
#define FIO3CLRH (*(volatile uint16_t*)0x2009C07E)
#define FIO3CLR0 (*(volatile uint8_t*)0x2009C07C)
#define FIO3CLR1 (*(volatile uint8_t*)0x2009C07D)
#define FIO3CLR2 (*(volatile uint8_t*)0x2009C07E)
#define FIO3CLR3 (*(volatile uint8_t*)0x2009C07F)
#define FIO4CLR (*(volatile uint32_t*)0x2009C09C)
#define FIO4CLRL (*(volatile uint16_t*)0x2009C09C)
#define FIO4CLRH (*(volatile uint16_t*)0x2009C09E)
#define FIO4CLR0 (*(volatile uint8_t*)0x2009C09C)
#define FIO4CLR1 (*(volatile uint8_t*)0x2009C09D)
#define FIO4CLR2 (*(volatile uint8_t*)0x2009C09E)
#define FIO4CLR3 (*(volatile uint8_t*)0x2009C09F)
#define IOIntStatus (*(volatile uint32_t*)0x40028080)
#define IO0IntStatR (*(volatile uint32_t*)0x40028084)
#define IO0IntStatF (*(volatile uint32_t*)0x40028088)
#define IO0IntClr (*(volatile uint32_t*)0x4002808C)
#define IO0IntEnR (*(volatile uint32_t*)0x40028090)
#define IO0IntEnF (*(volatile uint32_t*)0x40028094)
#define IO2IntStatR (*(volatile uint32_t*)0x400280A4)
#define IO2IntStatF (*(volatile uint32_t*)0x400280A8)
#define IO2IntClr (*(volatile uint32_t*)0x400280AC)
#define IO2IntEnR (*(volatile uint32_t*)0x400280B0)
#define IO2IntEnF (*(volatile uint32_t*)0x400280B4)
/* Ethernet MAC */
#define MAC1 (*(volatile uint32_t*)0x50000000)
#define MAC2 (*(volatile uint32_t*)0x50000004)
#define IPGT (*(volatile uint32_t*)0x50000008)
#define IPGR (*(volatile uint32_t*)0x5000000C)
#define CLRT (*(volatile uint32_t*)0x50000010)
#define MAXF (*(volatile uint32_t*)0x50000014)
#define SUPP (*(volatile uint32_t*)0x50000018)
#define TEST (*(volatile uint32_t*)0x5000001C)
#define MCFG (*(volatile uint32_t*)0x50000020)
#define MCMD (*(volatile uint32_t*)0x50000024)
#define MADR (*(volatile uint32_t*)0x50000028)
#define MWTD (*(volatile uint32_t*)0x5000002C)
#define MRDD (*(volatile uint32_t*)0x50000030)
#define MIND (*(volatile uint32_t*)0x50000034)
#define SA0 (*(volatile uint32_t*)0x50000040)
#define SA1 (*(volatile uint32_t*)0x50000044)
#define SA2 (*(volatile uint32_t*)0x50000048)
#define Command (*(volatile uint32_t*)0x50000100)
#define Status (*(volatile uint32_t*)0x50000104)
#define RxDescriptor (*(volatile uint32_t*)0x50000108)
#define RxStatus (*(volatile uint32_t*)0x5000010C)
#define RxDescriptorNumber (*(volatile uint32_t*)0x50000110)
#define RxProduceIndex (*(volatile uint32_t*)0x50000114)
#define RxConsumeIndex (*(volatile uint32_t*)0x50000118)
#define TxDescriptor (*(volatile uint32_t*)0x5000011C)
#define TxStatus (*(volatile uint32_t*)0x50000120)
#define TxDescriptorNumber (*(volatile uint32_t*)0x50000124)
#define TxProduceIndex (*(volatile uint32_t*)0x50000128)
#define TxConsumeIndex (*(volatile uint32_t*)0x5000012C)
#define TSV0 (*(volatile uint32_t*)0x50000158)
#define TSV1 (*(volatile uint32_t*)0x5000015C)
#define RSV (*(volatile uint32_t*)0x50000160)
#define FlowControlCounter (*(volatile uint32_t*)0x50000170)
#define FlowControlStatus (*(volatile uint32_t*)0x50000174)
#define RxFliterCtrl (*(volatile uint32_t*)0x50000200)
#define RxFilterWoLStatus (*(volatile uint32_t*)0x50000204)
#define RxFilterWoLClear (*(volatile uint32_t*)0x50000208)
#define HashFilterL (*(volatile uint32_t*)0x50000210)
#define HashFilterH (*(volatile uint32_t*)0x50000214)
#define IntStatus (*(volatile uint32_t*)0x50000FE0)
#define IntEnable (*(volatile uint32_t*)0x50000FE4)
#define IntClear (*(volatile uint32_t*)0x50000FE8)
#define IntSet (*(volatile uint32_t*)0x50000FEC)
#define PowerDown (*(volatile uint32_t*)0x50000FF4)
/* USB Device */
#define USBClkCtrl (*(volatile uint32_t*)0x5000CFF4)
#define USBClkSt (*(volatile uint32_t*)0x5000CFF8)
#define USBIntSt (*(volatile uint32_t*)0x400FC1C0)
#define USBDevIntSt (*(volatile uint32_t*)0x5000C200)
#define USBDevIntEn (*(volatile uint32_t*)0x5000C204)
#define USBDevIntClr (*(volatile uint32_t*)0x5000C208)
#define USBDevIntSet (*(volatile uint32_t*)0x5000C20C)
#define USBDevIntPri (*(volatile uint32_t*)0x5000C22C)
#define USBEpIntSt (*(volatile uint32_t*)0x5000C230)
#define USBEpIntEn (*(volatile uint32_t*)0x5000C234)
#define USBEpIntClr (*(volatile uint32_t*)0x5000C238)
#define USBEpIntSet (*(volatile uint32_t*)0x5000C23C)
#define USBEpIntPri (*(volatile uint32_t*)0x5000C240)
#define USBReEp (*(volatile uint32_t*)0x5000C244)
#define USBEpIn (*(volatile uint32_t*)0x5000C248)
#define USBMaxPSize (*(volatile uint32_t*)0x5000C24C)
#define USBRxData (*(volatile uint32_t*)0x5000C218)
#define USBRxPLen (*(volatile uint32_t*)0x5000C220)
#define USBTxData (*(volatile uint32_t*)0x5000C21C)
#define USBTxPLen (*(volatile uint32_t*)0x5000C224)
#define USBCtrl (*(volatile uint32_t*)0x5000C228)
#define USBCmdCode (*(volatile uint32_t*)0x5000C210)
#define USBCmdData (*(volatile uint32_t*)0x5000C214)
#define USBDMARSt (*(volatile uint32_t*)0x5000C250)
#define USBDMARClr (*(volatile uint32_t*)0x5000C254)
#define USBDMARSet (*(volatile uint32_t*)0x5000C258)
#define USBUDCAH (*(volatile uint32_t*)0x5000C280)
#define USBEpDMASt (*(volatile uint32_t*)0x5000C284)
#define USBEpDMAEn (*(volatile uint32_t*)0x5000C288)
#define USBEpDMADis (*(volatile uint32_t*)0x5000C28C)
#define USBDMAIntSt (*(volatile uint32_t*)0x5000C290)
#define USBDMAIntEn (*(volatile uint32_t*)0x5000C294)
#define USBEoTIntSt (*(volatile uint32_t*)0x5000C2A0)
#define USBEoTIntClr (*(volatile uint32_t*)0x5000C2A4)
#define USBEoTIntSet (*(volatile uint32_t*)0x5000C2A8)
#define USBNDDRIntSt (*(volatile uint32_t*)0x5000C2AC)
#define USBNDDRIntClr (*(volatile uint32_t*)0x5000C2B0)
#define USBNDDRIntSet (*(volatile uint32_t*)0x5000C2B4)
#define USBSysErrIntSt (*(volatile uint32_t*)0x5000C2B8)
#define USBSysErrIntClr (*(volatile uint32_t*)0x5000C2BC)
#define USBSysErrIntSet (*(volatile uint32_t*)0x5000C2C0)
/* USB OTG */
#define USBIntSt (*(volatile uint32_t*)0x400FC1C0)
#define OTGIntSt (*(volatile uint32_t*)0x5000C100)
#define OTGIntEn (*(volatile uint32_t*)0x5000C104)
#define OTGIntSet (*(volatile uint32_t*)0x5000C108)
#define OTGIntClr (*(volatile uint32_t*)0x5000C10C)
#define OTGStCtrl (*(volatile uint32_t*)0x5000C110)
#define OTGTmr (*(volatile uint32_t*)0x5000C114)
#define I2C_RX (*(volatile uint32_t*)0x5000C300)
#define I2C_TX (*(volatile uint32_t*)0x5000C300)
#define I2C_STS (*(volatile uint32_t*)0x5000C304)
#define I2C_CTL (*(volatile uint32_t*)0x5000C308)
#define I2C_CLKHI (*(volatile uint32_t*)0x5000C30C)
#define I2C_CLKLO (*(volatile uint32_t*)0x5000C310)
#define OTGClkCtrl (*(volatile uint32_t*)0x5000CFF4)
#define OTGClkSt (*(volatile uint32_t*)0x5000CFF8)
/* UART0,UART1,UART2,UART3 */
#define U0RBR (*(volatile uint32_t*)0x4000C000)
#define U0THR (*(volatile uint32_t*)0x4000C000)
#define U0DLL (*(volatile uint32_t*)0x4000C000)
#define U0DLM (*(volatile uint32_t*)0x4000C004)
#define U0IER (*(volatile uint32_t*)0x4000C004)
#define U0IIR (*(volatile uint32_t*)0x4000C008)
#define U0FCR (*(volatile uint32_t*)0x4000C008)
#define U0LCR (*(volatile uint32_t*)0x4000C00C)
#define U0LSR (*(volatile uint32_t*)0x4000C014)
#define U0SCR (*(volatile uint32_t*)0x4000C01C)
#define U0ACR (*(volatile uint32_t*)0x4000C020)
#define U0ICR (*(volatile uint32_t*)0x4000C024)
#define U0FDR (*(volatile uint32_t*)0x4000C028)
#define U0TER (*(volatile uint32_t*)0x4000C030)
#define U1RBR (*(volatile uint32_t*)0x40010000)
#define U1THR (*(volatile uint32_t*)0x40010000)
#define U1DLL (*(volatile uint32_t*)0x40010000)
#define U1DLM (*(volatile uint32_t*)0x40010004)
#define U1IER (*(volatile uint32_t*)0x40010004)
#define U1IIR (*(volatile uint32_t*)0x40010008)
#define U1FCR (*(volatile uint32_t*)0x40010008)
#define U1LCR (*(volatile uint32_t*)0x4001000C)
#define U1MCR (*(volatile uint32_t*)0x40010010)
#define U1LSR (*(volatile uint32_t*)0x40010014)
#define U1MSR (*(volatile uint32_t*)0x40010018)
#define U1SCR (*(volatile uint32_t*)0x4001001C)
#define U1ACR (*(volatile uint32_t*)0x40010020)
#define U1FDR (*(volatile uint32_t*)0x40010028)
#define U1TER (*(volatile uint32_t*)0x40010030)
#define U1RS485CTRL (*(volatile uint32_t*)0x4001004C)
#define U1ADRMATCH (*(volatile uint32_t*)0x40010050)
#define U1RS485DLY (*(volatile uint32_t*)0x40010054)
#define U2RBR (*(volatile uint32_t*)0x40098000)
#define U2THR (*(volatile uint32_t*)0x40098000)
#define U2DLL (*(volatile uint32_t*)0x40098000)
#define U2DLM (*(volatile uint32_t*)0x40098004)
#define U2IER (*(volatile uint32_t*)0x40098004)
#define U2IIR (*(volatile uint32_t*)0x40098008)
#define U2FCR (*(volatile uint32_t*)0x40098008)
#define U2LCR (*(volatile uint32_t*)0x4009800C)
#define U2LSR (*(volatile uint32_t*)0x40098014)
#define U2SCR (*(volatile uint32_t*)0x4009801C)
#define U2ACR (*(volatile uint32_t*)0x40098020)
#define U2ICR (*(volatile uint32_t*)0x40098024)
#define U2FDR (*(volatile uint32_t*)0x40098028)
#define U2TER (*(volatile uint32_t*)0x40098030)
#define U3RBR (*(volatile uint32_t*)0x4009C000)
#define U3THR (*(volatile uint32_t*)0x4009C000)
#define U3DLL (*(volatile uint32_t*)0x4009C000)
#define U3DLM (*(volatile uint32_t*)0x4009C004)
#define U3IER (*(volatile uint32_t*)0x4009C004)
#define U3IIR (*(volatile uint32_t*)0x4009C008)
#define U3FCR (*(volatile uint32_t*)0x4009C008)
#define U3LCR (*(volatile uint32_t*)0x4009C00C)
#define U3LSR (*(volatile uint32_t*)0x4009C014)
#define U3SCR (*(volatile uint32_t*)0x4009C01C)
#define U3ACR (*(volatile uint32_t*)0x4009C020)
#define U3ICR (*(volatile uint32_t*)0x4009C024)
#define U3FDR (*(volatile uint32_t*)0x4009C028)
#define U3TER (*(volatile uint32_t*)0x4009C030)
/* CAN1,CAN2 */
#define AFMR (*(volatile uint32_t*)0x4003C000)
#define SFF_sa (*(volatile uint32_t*)0x4003C004)
#define SFF_GRP_sa (*(volatile uint32_t*)0x4003C008)
#define EFF_sa (*(volatile uint32_t*)0x4003C00C)
#define EFF_GRP_sa (*(volatile uint32_t*)0x4003C010)
#define ENDofTable (*(volatile uint32_t*)0x4003C014)
#define LUTerrAd (*(volatile uint32_t*)0x4003C018)
#define LUTerr (*(volatile uint32_t*)0x4003C01C)
#define CANTxSR (*(volatile uint32_t*)0x40040000)
#define CANRxSR (*(volatile uint32_t*)0x40040004)
#define CANMSR (*(volatile uint32_t*)0x40040008)
#define CAN1MOD (*(volatile uint32_t*)0x40044000)
#define CAN1CMR (*(volatile uint32_t*)0x40044004)
#define CAN1GSR (*(volatile uint32_t*)0x40044008)
#define CAN1ICR (*(volatile uint32_t*)0x4004400C)
#define CAN1IER (*(volatile uint32_t*)0x40044010)
#define CAN1BTR (*(volatile uint32_t*)0x40044014)
#define CAN1EWL (*(volatile uint32_t*)0x40044018)
#define CAN1SR (*(volatile uint32_t*)0x4004401C)
#define CAN1RFS (*(volatile uint32_t*)0x40044020)
#define CAN1RID (*(volatile uint32_t*)0x40044024)
#define CAN1RDA (*(volatile uint32_t*)0x40044028)
#define CAN1RDB (*(volatile uint32_t*)0x4004402C)
#define CAN1TFI1 (*(volatile uint32_t*)0x40044030)
#define CAN1TID1 (*(volatile uint32_t*)0x40044034)
#define CAN1TDA1 (*(volatile uint32_t*)0x40044038)
#define CAN1TDB1 (*(volatile uint32_t*)0x4004403C)
#define CAN1TFI2 (*(volatile uint32_t*)0x40044040)
#define CAN1TID2 (*(volatile uint32_t*)0x40044044)
#define CAN1TDA2 (*(volatile uint32_t*)0x40044048)
#define CAN1TDB2 (*(volatile uint32_t*)0x4004404C)
#define CAN1TFI3 (*(volatile uint32_t*)0x40044050)
#define CAN1TID3 (*(volatile uint32_t*)0x40044054)
#define CAN1TDA3 (*(volatile uint32_t*)0x40044058)
#define CAN1TDB3 (*(volatile uint32_t*)0x4004405C)
#define CAN2MOD (*(volatile uint32_t*)0x40048000)
#define CAN2CMR (*(volatile uint32_t*)0x40048004)
#define CAN2GSR (*(volatile uint32_t*)0x40048008)
#define CAN2ICR (*(volatile uint32_t*)0x4004800C)
#define CAN2IER (*(volatile uint32_t*)0x40048010)
#define CAN2BTR (*(volatile uint32_t*)0x40048014)
#define CAN2EWL (*(volatile uint32_t*)0x40048018)
#define CAN2SR (*(volatile uint32_t*)0x4004801C)
#define CAN2RFS (*(volatile uint32_t*)0x40048020)
#define CAN2RID (*(volatile uint32_t*)0x40048024)
#define CAN2RDA (*(volatile uint32_t*)0x40048028)
#define CAN2RDB (*(volatile uint32_t*)0x4004802C)
#define CAN2TFI1 (*(volatile uint32_t*)0x40048030)
#define CAN2TID1 (*(volatile uint32_t*)0x40048034)
#define CAN2TDA1 (*(volatile uint32_t*)0x40048038)
#define CAN2TDB1 (*(volatile uint32_t*)0x4004803C)
#define CAN2TFI2 (*(volatile uint32_t*)0x40048040)
#define CAN2TID2 (*(volatile uint32_t*)0x40048044)
#define CAN2TDA2 (*(volatile uint32_t*)0x40048048)
#define CAN2TDB2 (*(volatile uint32_t*)0x4004804C)
#define CAN2TFI3 (*(volatile uint32_t*)0x40048050)
#define CAN2TID3 (*(volatile uint32_t*)0x40048054)
#define CAN2TDA3 (*(volatile uint32_t*)0x40048058)
#define CAN2TDB3 (*(volatile uint32_t*)0x4004805C)
/* SPI0 */
#define S0SPCR (*(volatile uint32_t*)0x40020000)
#define S0SPSR (*(volatile uint32_t*)0x40020004)
#define S0SPDR (*(volatile uint32_t*)0x40020008)
#define S0SPCCR (*(volatile uint32_t*)0x4002000C)
#define S0SPINT (*(volatile uint32_t*)0x4002001C)
/* SSP0,SSP1 */
#define SSP0CR0 (*(volatile uint32_t*)0x40088000)
#define SSP0CR1 (*(volatile uint32_t*)0x40088004)
#define SSP0DR (*(volatile uint32_t*)0x40088008)
#define SSP0SR (*(volatile uint32_t*)0x4008800C)
#define SSP0CPSR (*(volatile uint32_t*)0x40088010)
#define SSP0IMSC (*(volatile uint32_t*)0x40088014)
#define SSP0RIS (*(volatile uint32_t*)0x40088018)
#define SSP0MIS (*(volatile uint32_t*)0x4008801C)
#define SSP0ICR (*(volatile uint32_t*)0x40088020)
#define SSP0DMACR (*(volatile uint32_t*)0x40088024)
#define SSP1CR0 (*(volatile uint32_t*)0x40030000)
#define SSP1CR1 (*(volatile uint32_t*)0x40030004)
#define SSP1DR (*(volatile uint32_t*)0x40030008)
#define SSP1SR (*(volatile uint32_t*)0x4003000C)
#define SSP1CPSR (*(volatile uint32_t*)0x40030010)
#define SSP1IMSC (*(volatile uint32_t*)0x40030014)
#define SSP1RIS (*(volatile uint32_t*)0x40030018)
#define SSP1MIS (*(volatile uint32_t*)0x4003001C)
#define SSP1ICR (*(volatile uint32_t*)0x40030020)
#define SSP1DMACR (*(volatile uint32_t*)0x40030024)
/* I2C0,I2C1,I2C2 */
#define I2C0CONSET (*(volatile uint32_t*)0x4001C000)
#define I2C0STAT (*(volatile uint32_t*)0x4001C004)
#define I2C0DAT (*(volatile uint32_t*)0x4001C008)
#define I2C0ADR0 (*(volatile uint32_t*)0x4001C00C)
#define I2C0SCLH (*(volatile uint32_t*)0x4001C010)
#define I2C0SCLL (*(volatile uint32_t*)0x4001C014)
#define I2C0CONCLR (*(volatile uint32_t*)0x4001C018)
#define I2C0MMCTRL (*(volatile uint32_t*)0x4001C01C)
#define I2C0ADR1 (*(volatile uint32_t*)0x4001C020)
#define I2C0ADR2 (*(volatile uint32_t*)0x4001C024)
#define I2C0ADR3 (*(volatile uint32_t*)0x4001C028)
#define I2C0DATA_BUFFER (*(volatile uint32_t*)0x4001C02C)
#define I2C0MASK ( (volatile uint32_t*)0x4001C030)
#define I2C0MASK0 (*(volatile uint32_t*)0x4001C030)
#define I2C0MASK1 (*(volatile uint32_t*)0x4001C034)
#define I2C0MASK2 (*(volatile uint32_t*)0x4001C038)
#define I2C0MASK3 (*(volatile uint32_t*)0x4001C03C)
#define I2C1CONSET (*(volatile uint32_t*)0x4005C000)
#define I2C1STAT (*(volatile uint32_t*)0x4005C004)
#define I2C1DAT (*(volatile uint32_t*)0x4005C008)
#define I2C1ADR0 (*(volatile uint32_t*)0x4005C00C)
#define I2C1SCLH (*(volatile uint32_t*)0x4005C010)
#define I2C1SCLL (*(volatile uint32_t*)0x4005C014)
#define I2C1CONCLR (*(volatile uint32_t*)0x4005C018)
#define I2C1MMCTRL (*(volatile uint32_t*)0x4005C01C)
#define I2C1ADR1 (*(volatile uint32_t*)0x4005C020)
#define I2C1ADR2 (*(volatile uint32_t*)0x4005C024)
#define I2C1ADR3 (*(volatile uint32_t*)0x4005C028)
#define I2C1DATA_BUFFER (*(volatile uint32_t*)0x4005C02C)
#define I2C1MASK ( (volatile uint32_t*)0x4005C030)
#define I2C1MASK0 (*(volatile uint32_t*)0x4005C030)
#define I2C1MASK1 (*(volatile uint32_t*)0x4005C034)
#define I2C1MASK2 (*(volatile uint32_t*)0x4005C038)
#define I2C1MASK3 (*(volatile uint32_t*)0x4005C03C)
#define I2C2CONSET (*(volatile uint32_t*)0x400A0000)
#define I2C2STAT (*(volatile uint32_t*)0x400A0004)
#define I2C2DAT (*(volatile uint32_t*)0x400A0008)
#define I2C2ADR0 (*(volatile uint32_t*)0x400A000C)
#define I2C2SCLH (*(volatile uint32_t*)0x400A0010)
#define I2C2SCLL (*(volatile uint32_t*)0x400A0014)
#define I2C2CONCLR (*(volatile uint32_t*)0x400A0018)
#define I2C2MMCTRL (*(volatile uint32_t*)0x400A001C)
#define I2C2ADR1 (*(volatile uint32_t*)0x400A0020)
#define I2C2ADR2 (*(volatile uint32_t*)0x400A0024)
#define I2C2ADR3 (*(volatile uint32_t*)0x400A0028)
#define I2C2DATA_BUFFER (*(volatile uint32_t*)0x400A002C)
#define I2C2MASK ( (volatile uint32_t*)0x400A0030)
#define I2C2MASK0 (*(volatile uint32_t*)0x400A0030)
#define I2C2MASK1 (*(volatile uint32_t*)0x400A0034)
#define I2C2MASK2 (*(volatile uint32_t*)0x400A0038)
#define I2C2MASK3 (*(volatile uint32_t*)0x400A003C)
/* I2S */
#define I2SDAO (*(volatile uint32_t*)0x400A8000)
#define I2SDAI (*(volatile uint32_t*)0x400A8004)
#define I2STXFIFO (*(volatile uint32_t*)0x400A8008)
#define I2SRXFIFO (*(volatile uint32_t*)0x400A800C)
#define I2SSTATE (*(volatile uint32_t*)0x400A8010)
#define I2SDMA1 (*(volatile uint32_t*)0x400A8014)
#define I2SDMA2 (*(volatile uint32_t*)0x400A8018)
#define I2SIRQ (*(volatile uint32_t*)0x400A801C)
#define I2STXRATE (*(volatile uint32_t*)0x400A8020)
#define I2SRXRATE (*(volatile uint32_t*)0x400A8024)
#define I2STXBITRATE (*(volatile uint32_t*)0x400A8028)
#define I2SRXBITRATE (*(volatile uint32_t*)0x400A802C)
#define I2STXMODE (*(volatile uint32_t*)0x400A8030)
#define I2SRXMODE (*(volatile uint32_t*)0x400A8034)
/* Timer0,Timer1,Timer2,Timer3 */
#define T0IR (*(volatile uint32_t*)0x40004000)
#define T0TCR (*(volatile uint32_t*)0x40004004)
#define T0TC (*(volatile uint32_t*)0x40004008)
#define T0PR (*(volatile uint32_t*)0x4000400C)
#define T0PC (*(volatile uint32_t*)0x40004010)
#define T0MCR (*(volatile uint32_t*)0x40004014)
#define T0MR ( (volatile uint32_t*)0x40004018)
#define T0MR0 (*(volatile uint32_t*)0x40004018)
#define T0MR1 (*(volatile uint32_t*)0x4000401C)
#define T0MR2 (*(volatile uint32_t*)0x40004020)
#define T0MR3 (*(volatile uint32_t*)0x40004024)
#define T0CCR (*(volatile uint32_t*)0x40004028)
#define T0CR0 (*(volatile uint32_t*)0x4000402C)
#define T0CR1 (*(volatile uint32_t*)0x40004030)
#define T0EMR (*(volatile uint32_t*)0x4000403C)
#define T0CTCR (*(volatile uint32_t*)0x40004070)
#define T1IR (*(volatile uint32_t*)0x40008000)
#define T1TCR (*(volatile uint32_t*)0x40008004)
#define T1TC (*(volatile uint32_t*)0x40008008)
#define T1PR (*(volatile uint32_t*)0x4000800C)
#define T1PC (*(volatile uint32_t*)0x40008010)
#define T1MCR (*(volatile uint32_t*)0x40008014)
#define T1MR ( (volatile uint32_t*)0x40008018)
#define T1MR0 (*(volatile uint32_t*)0x40008018)
#define T1MR1 (*(volatile uint32_t*)0x4000801C)
#define T1MR2 (*(volatile uint32_t*)0x40008020)
#define T1MR3 (*(volatile uint32_t*)0x40008024)
#define T1CCR (*(volatile uint32_t*)0x40008028)
#define T1CR0 (*(volatile uint32_t*)0x4000802C)
#define T1CR1 (*(volatile uint32_t*)0x40008030)
#define T1EMR (*(volatile uint32_t*)0x4000803C)
#define T1CTCR (*(volatile uint32_t*)0x40008070)
#define T2IR (*(volatile uint32_t*)0x40090000)
#define T2TCR (*(volatile uint32_t*)0x40090004)
#define T2TC (*(volatile uint32_t*)0x40090008)
#define T2PR (*(volatile uint32_t*)0x4009000C)
#define T2PC (*(volatile uint32_t*)0x40090010)
#define T2MCR (*(volatile uint32_t*)0x40090014)
#define T2MR ( (volatile uint32_t*)0x40090018)
#define T2MR0 (*(volatile uint32_t*)0x40090018)
#define T2MR1 (*(volatile uint32_t*)0x4009001C)
#define T2MR2 (*(volatile uint32_t*)0x40090020)
#define T2MR3 (*(volatile uint32_t*)0x40090024)
#define T2CCR (*(volatile uint32_t*)0x40090028)
#define T2CR0 (*(volatile uint32_t*)0x4009002C)
#define T2CR1 (*(volatile uint32_t*)0x40090030)
#define T2EMR (*(volatile uint32_t*)0x4009003C)
#define T2CTCR (*(volatile uint32_t*)0x40090070)
#define T3IR (*(volatile uint32_t*)0x40094000)
#define T3TCR (*(volatile uint32_t*)0x40094004)
#define T3TC (*(volatile uint32_t*)0x40094008)
#define T3PR (*(volatile uint32_t*)0x4009400C)
#define T3PC (*(volatile uint32_t*)0x40094010)
#define T3MCR (*(volatile uint32_t*)0x40094014)
#define T3MR ( (volatile uint32_t*)0x40094018)
#define T3MR0 (*(volatile uint32_t*)0x40094018)
#define T3MR1 (*(volatile uint32_t*)0x4009401C)
#define T3MR2 (*(volatile uint32_t*)0x40094020)
#define T3MR3 (*(volatile uint32_t*)0x40094024)
#define T3CCR (*(volatile uint32_t*)0x40094028)
#define T3CR0 (*(volatile uint32_t*)0x4009402C)
#define T3CR1 (*(volatile uint32_t*)0x40094030)
#define T3EMR (*(volatile uint32_t*)0x4009403C)
#define T3CTCR (*(volatile uint32_t*)0x40094070)
/* Repeative Interrupt Timer */
#define RICOMPVAL (*(volatile uint32_t*)0x400B0000)
#define RIMASK (*(volatile uint32_t*)0x400B0004)
#define RICTRL (*(volatile uint32_t*)0x400B0008)
#define RICOUNTER (*(volatile uint32_t*)0x400B000C)
/* PWM1 */
#define PWM1IR (*(volatile uint32_t*)0x40018000)
#define PWM1TCR (*(volatile uint32_t*)0x40018004)
#define PWM1TC (*(volatile uint32_t*)0x40018008)
#define PWM1PR (*(volatile uint32_t*)0x4001800C)
#define PWM1PC (*(volatile uint32_t*)0x40018010)
#define PWM1MCR (*(volatile uint32_t*)0x40018014)
#define PWM1MR0 (*(volatile uint32_t*)0x40018018)
#define PWM1MR1 (*(volatile uint32_t*)0x4001801C)
#define PWM1MR2 (*(volatile uint32_t*)0x40018020)
#define PWM1MR3 (*(volatile uint32_t*)0x40018024)
#define PWM1CCR (*(volatile uint32_t*)0x40018028)
#define PWM1CR0 (*(volatile uint32_t*)0x4001802C)
#define PWM1CR1 (*(volatile uint32_t*)0x40018030)
#define PWM1CR2 (*(volatile uint32_t*)0x40018034)
#define PWM1CR3 (*(volatile uint32_t*)0x40018038)
#define PWM1MR4 (*(volatile uint32_t*)0x40018040)
#define PWM1MR5 (*(volatile uint32_t*)0x40018044)
#define PWM1MR6 (*(volatile uint32_t*)0x40018048)
#define PWM1PCR (*(volatile uint32_t*)0x4001804C)
#define PWM1LER (*(volatile uint32_t*)0x40018050)
#define PWM1CTCR (*(volatile uint32_t*)0x40018070)
/* Motor Control PWM */
#define MCCON (*(volatile uint32_t*)0x400B8000)
#define MCCON_SET (*(volatile uint32_t*)0x400B8004)
#define MCCON_CLR (*(volatile uint32_t*)0x400B8008)
#define MCCAPCON (*(volatile uint32_t*)0x400B800C)
#define MCCAPCON_SET (*(volatile uint32_t*)0x400B8010)
#define MCCAPCON_CLR (*(volatile uint32_t*)0x400B8014)
#define MCTC ( (volatile uint32_t*)0x400B8018)
#define MCTC0 (*(volatile uint32_t*)0x400B8018)
#define MCTC1 (*(volatile uint32_t*)0x400B801C)
#define MCTC2 (*(volatile uint32_t*)0x400B8020)
#define MCLIM ( (volatile uint32_t*)0x400B8024)
#define MCLIM0 (*(volatile uint32_t*)0x400B8024)
#define MCLIM1 (*(volatile uint32_t*)0x400B8028)
#define MCLIM2 (*(volatile uint32_t*)0x400B802C)
#define MCMAT ( (volatile uint32_t*)0x400B8030)
#define MCMAT0 (*(volatile uint32_t*)0x400B8030)
#define MCMAT1 (*(volatile uint32_t*)0x400B8034)
#define MCMAT2 (*(volatile uint32_t*)0x400B8038)
#define MCDT (*(volatile uint32_t*)0x400B803C)
#define MCCP (*(volatile uint32_t*)0x400B8040)
#define MCCAP ( (volatile uint32_t*)0x400B8044)
#define MCCAP0 (*(volatile uint32_t*)0x400B8044)
#define MCCAP1 (*(volatile uint32_t*)0x400B8048)
#define MCCAP2 (*(volatile uint32_t*)0x400B804C)
#define MCINTEN (*(volatile uint32_t*)0x400B8050)
#define MCINTEN_SET (*(volatile uint32_t*)0x400B8054)
#define MCINTEN_CLR (*(volatile uint32_t*)0x400B8058)
#define MCCNTCON (*(volatile uint32_t*)0x400B805C)
#define MCCNTCON_SET (*(volatile uint32_t*)0x400B8060)
#define MCCNTCON_CLR (*(volatile uint32_t*)0x400B8064)
#define MCINTF (*(volatile uint32_t*)0x400B8068)
#define MCINTF_SET (*(volatile uint32_t*)0x400B806C)
#define MCINTF_CLR (*(volatile uint32_t*)0x400B8070)
#define MCCAP_CLR (*(volatile uint32_t*)0x400B8074)
/* Quadrature Encoder Interface */
#define QEICON (*(volatile uint32_t*)0x400BC000)
#define QEICONF (*(volatile uint32_t*)0x400BC008)
#define QEISTAT (*(volatile uint32_t*)0x400BC004)
#define QEIPOS (*(volatile uint32_t*)0x400BC00C)
#define QEIMAXPOS (*(volatile uint32_t*)0x400BC010)
#define CMPOS0 (*(volatile uint32_t*)0x400BC014)
#define CMPOS1 (*(volatile uint32_t*)0x400BC018)
#define CMPOS2 (*(volatile uint32_t*)0x400BC01C)
#define INXCNT (*(volatile uint32_t*)0x400BC020)
#define INXCMP (*(volatile uint32_t*)0x400BC024)
#define QEILOAD (*(volatile uint32_t*)0x400BC028)
#define QEITIME (*(volatile uint32_t*)0x400BC02C)
#define QEIVEL (*(volatile uint32_t*)0x400BC030)
#define QEICAP (*(volatile uint32_t*)0x400BC034)
#define VELCOMP (*(volatile uint32_t*)0x400BC038)
#define FILTER (*(volatile uint32_t*)0x400BC03C)
#define QEIINTSTAT (*(volatile uint32_t*)0x400BCFE0)
#define QEISET (*(volatile uint32_t*)0x400BCFEC)
#define QEICLR (*(volatile uint32_t*)0x400BCFE8)
#define QEIIE (*(volatile uint32_t*)0x400BCFE4)
#define QEIIES (*(volatile uint32_t*)0x400BCFDC)
#define QEIIEC (*(volatile uint32_t*)0x400BCFD8)
/* RTC */
#define RTC_ILR (*(volatile uint32_t*)0x40024000)
#define RTC_CCR (*(volatile uint32_t*)0x40024008)
#define RTC_CIIR (*(volatile uint32_t*)0x4002400C)
#define RTC_AMR (*(volatile uint32_t*)0x40024010)
#define RTC_AUX (*(volatile uint32_t*)0x4002405C)
#define RTC_AUXEN (*(volatile uint32_t*)0x40024058)
#define RTC_CTIME0 (*(volatile uint32_t*)0x40024014)
#define RTC_CTIME1 (*(volatile uint32_t*)0x40024018)
#define RTC_CTIME2 (*(volatile uint32_t*)0x4002401C)
#define RTC_SEC (*(volatile uint32_t*)0x40024020)
#define RTC_MIN (*(volatile uint32_t*)0x40024024)
#define RTC_HOUR (*(volatile uint32_t*)0x40024028)
#define RTC_DOM (*(volatile uint32_t*)0x4002402C)
#define RTC_DOW (*(volatile uint32_t*)0x40024030)
#define RTC_DOY (*(volatile uint32_t*)0x40024034)
#define RTC_MONTH (*(volatile uint32_t*)0x40024038)
#define RTC_YEAR (*(volatile uint32_t*)0x4002403C)
#define RTC_CALIBRATION (*(volatile uint32_t*)0x40024040)
#define RTC_GPREG ( (volatile uint32_t*)0x40024044)
#define RTC_GPREG0 (*(volatile uint32_t*)0x40024044)
#define RTC_GPREG1 (*(volatile uint32_t*)0x40024048)
#define RTC_GPREG2 (*(volatile uint32_t*)0x4002404C)
#define RTC_GPREG3 (*(volatile uint32_t*)0x40024050)
#define RTC_GPREG4 (*(volatile uint32_t*)0x40024054)
#define RTC_ALSEC (*(volatile uint32_t*)0x40024060)
#define RTC_ALMIN (*(volatile uint32_t*)0x40024064)
#define RTC_ALHOUR (*(volatile uint32_t*)0x40024068)
#define RTC_ALDOM (*(volatile uint32_t*)0x4002406C)
#define RTC_ALDOW (*(volatile uint32_t*)0x40024070)
#define RTC_ALDOY (*(volatile uint32_t*)0x40024074)
#define RTC_ALMON (*(volatile uint32_t*)0x40024078)
#define RTC_ALYEAR (*(volatile uint32_t*)0x4002407C)
/* WDT */
#define WDMOD (*(volatile uint32_t*)0x40000000)
#define WDTC (*(volatile uint32_t*)0x40000004)
#define WDFEED (*(volatile uint32_t*)0x40000008)
#define WDTV (*(volatile uint32_t*)0x4000000C)
#define WDCLKSEL (*(volatile uint32_t*)0x40000010)
/* ADC0 */
#define AD0CR (*(volatile uint32_t*)0x40034000)
#define AD0GDR (*(volatile uint32_t*)0x40034004)
#define AD0INTEN (*(volatile uint32_t*)0x4003400C)
#define AD0DR ( (volatile uint32_t*)0x40034010)
#define AD0DR0 (*(volatile uint32_t*)0x40034010)
#define AD0DR1 (*(volatile uint32_t*)0x40034014)
#define AD0DR2 (*(volatile uint32_t*)0x40034018)
#define AD0DR3 (*(volatile uint32_t*)0x4003401C)
#define AD0DR4 (*(volatile uint32_t*)0x40034020)
#define AD0DR5 (*(volatile uint32_t*)0x40034024)
#define AD0DR6 (*(volatile uint32_t*)0x40034028)
#define AD0DR7 (*(volatile uint32_t*)0x4003402C)
#define AD0STAT (*(volatile uint32_t*)0x40034030)
#define AD0TRM (*(volatile uint32_t*)0x40034034)
/* DAC */
#define DACR (*(volatile uint32_t*)0x4008C000)
#define DACCTRL (*(volatile uint32_t*)0x4008C004)
#define DACCNTVAL (*(volatile uint32_t*)0x4008C008)
/* GPDMA */
#define DMACIntStat (*(volatile uint32_t*)0x50004000)
#define DMACIntTCStat (*(volatile uint32_t*)0x50004004)
#define DMACIntTCClear (*(volatile uint32_t*)0x50004008)
#define DMACIntErrStat (*(volatile uint32_t*)0x5000400C)
#define DMACIntErrClr (*(volatile uint32_t*)0x50004010)
#define DMACRawIntTCStat (*(volatile uint32_t*)0x50004014)
#define DMACRawIntErrStat (*(volatile uint32_t*)0x50004018)
#define DMACEnbldChns (*(volatile uint32_t*)0x5000401C)
#define DMACSoftBReq (*(volatile uint32_t*)0x50004020)
#define DMACSoftSReq (*(volatile uint32_t*)0x50004024)
#define DMACSoftLBReq (*(volatile uint32_t*)0x50004028)
#define DMACSoftLSReq (*(volatile uint32_t*)0x5000402C)
#define DMACConfig (*(volatile uint32_t*)0x50004030)
#define DMACSync (*(volatile uint32_t*)0x50004034)
#define DMAREQSEL (*(volatile uint32_t*)0x400FC1C4)
#define DMACC0SrcAddr (*(volatile uint32_t*)0x50004100)
#define DMACC0DestAddr (*(volatile uint32_t*)0x50004104)
#define DMACC0LLI (*(volatile uint32_t*)0x50004108)
#define DMACC0Control (*(volatile uint32_t*)0x5000410C)
#define DMACC0Config (*(volatile uint32_t*)0x50004110)
#define DMACC1SrcAddr (*(volatile uint32_t*)0x50004120)
#define DMACC1DestAddr (*(volatile uint32_t*)0x50004124)
#define DMACC1LLI (*(volatile uint32_t*)0x50004128)
#define DMACC1Control (*(volatile uint32_t*)0x5000412C)
#define DMACC1Config (*(volatile uint32_t*)0x50004130)
#define DMACC2SrcAddr (*(volatile uint32_t*)0x50004140)
#define DMACC2DestAddr (*(volatile uint32_t*)0x50004144)
#define DMACC2LLI (*(volatile uint32_t*)0x50004148)
#define DMACC2Control (*(volatile uint32_t*)0x5000414C)
#define DMACC2Config (*(volatile uint32_t*)0x50004150)
#define DMACC3SrcAddr (*(volatile uint32_t*)0x50004160)
#define DMACC3DestAddr (*(volatile uint32_t*)0x50004164)
#define DMACC3LLI (*(volatile uint32_t*)0x50004168)
#define DMACC3Control (*(volatile uint32_t*)0x5000416C)
#define DMACC3Config (*(volatile uint32_t*)0x50004170)
#define DMACC4SrcAddr (*(volatile uint32_t*)0x50004180)
#define DMACC4DestAddr (*(volatile uint32_t*)0x50004184)
#define DMACC4LLI (*(volatile uint32_t*)0x50004188)
#define DMACC4Control (*(volatile uint32_t*)0x5000418C)
#define DMACC4Config (*(volatile uint32_t*)0x50004190)
#define DMACC5SrcAddr (*(volatile uint32_t*)0x500041A0)
#define DMACC5DestAddr (*(volatile uint32_t*)0x500041A4)
#define DMACC5LLI (*(volatile uint32_t*)0x500041A8)
#define DMACC5Control (*(volatile uint32_t*)0x500041AC)
#define DMACC5Config (*(volatile uint32_t*)0x500041B0)
#define DMACC6SrcAddr (*(volatile uint32_t*)0x500041C0)
#define DMACC6DestAddr (*(volatile uint32_t*)0x500041C4)
#define DMACC6LLI (*(volatile uint32_t*)0x500041C8)
#define DMACC6Control (*(volatile uint32_t*)0x500041CC)
#define DMACC6Config (*(volatile uint32_t*)0x500041D0)
#define DMACC7SrcAddr (*(volatile uint32_t*)0x500041E0)
#define DMACC7DestAddr (*(volatile uint32_t*)0x500041E4)
#define DMACC7LLI (*(volatile uint32_t*)0x500041E8)
#define DMACC7Control (*(volatile uint32_t*)0x500041EC)
#define DMACC7Config (*(volatile uint32_t*)0x500041F0)
/* Cortex-M3 System timer */
#define SYST_CSR (*(volatile uint32_t*)0xE000E010)
#define SYST_RVR (*(volatile uint32_t*)0xE000E014)
#define SYST_CVR (*(volatile uint32_t*)0xE000E018)
#define SYST_CALIB (*(volatile uint32_t*)0xE000E01C)
/* Cortex-M3 NVIC */
#define ISER ( (volatile uint32_t*)0xE000E100)
#define ICER ( (volatile uint32_t*)0xE000E180)
#define ISPR ( (volatile uint32_t*)0xE000E200)
#define ICPR ( (volatile uint32_t*)0xE000E280)
#define IABR ( (volatile uint32_t*)0xE000E300)
#define IPR ( (volatile uint8_t *)0xE000E400)
#define STIR (*(volatile uint32_t*)0xE000EF00)
/* Cortex-M3 SCB */
#define ACTLR (*(volatile uint32_t*)0xE000E008)
#define CPUID (*(volatile uint32_t*)0xE000ED00)
#define ICSR (*(volatile uint32_t*)0xE000ED04)
#define VTOR (*(volatile uint32_t*)0xE000ED08)
#define AIRCR (*(volatile uint32_t*)0xE000ED0C)
#define SCR (*(volatile uint32_t*)0xE000ED10)
#define CCR (*(volatile uint32_t*)0xE000ED14)
#define SHPR ( (volatile uint8_t *)0xE000ED14)
#define CFSR (*(volatile uint32_t*)0xE000ED28)
#define MMSR (*(volatile uint32_t*)0xE000ED28)
#define BFSR (*(volatile uint32_t*)0xE000ED29)
#define UFSR (*(volatile uint32_t*)0xE000ED2A)
#define HFSR (*(volatile uint32_t*)0xE000ED2C)
#define MMFAR (*(volatile uint32_t*)0xE000ED34)
#define BFAR (*(volatile uint32_t*)0xE000ED38)
/*--------------------------------------------------------------*/
/* Cortex-M3 core/peripheral access macros */
/*--------------------------------------------------------------*/
/* These are for only privileged mode */
#define __enable_irq() asm volatile ("CPSIE i\n")
#define __disable_irq() asm volatile ("CPSID i\n")
#define __enable_irqn(n) ISER[(n) / 32] = 1 << ((n) % 32)
#define __disable_irqn(n) ICER[(n) / 32] = 1 << ((n) % 32)
#define __test_irqn_enabled(n) (ISER[(n) / 32] & (1 << ((n) % 32)))
#define __set_irqn(n) ISPR[(n) / 32] = 1 << ((n) % 32)
#define __clear_irqn(n) ICPR[(n) / 32] = 1 << ((n) % 32)
#define __test_irqn(n) (ICPR[(n) / 32] & (1 << ((n) % 32)))
#define __test_irqn_active(n) (IABR[n / 32] & (1 << ((n) % 32)))
#define __set_irqn_priority(n,v) IPR[n] = (v)
#define __set_faultn_priority(n,v) SHPR[(n) + 16] = (v)
#define __get_MSP() ({uint32_t __rv; asm ("MRS %0, MSP\n" : "=r" (__rv)); __rv;})
#define __get_PSP() ({uint32_t __rv; asm ("MRS %0, PSP\n" : "=r" (__rv)); __rv;})
#define __get_PRIMASK() ({uint32_t __rv; asm ("MRS %0, PRIMASK\n" : "=r" (__rv)); __rv;})
#define __get_FAULTMASK() ({uint32_t __rv; asm ("MRS %0, FAULTMASK\n" : "=r" (__rv)); __rv;})
#define __get_BASEPRI() ({uint32_t __rv; asm ("MRS %0, BASEPRI\n" : "=r" (__rv)); __rv;})
#define __get_CONTROL() ({uint32_t __rv; asm ("MRS %0, CONTROL\n" : "=r" (__rv)); __rv;})
#define __set_MSP(arg) {uint32_t __v=arg; asm ("MSR MSP, %0\n" :: "r" (__v));}
#define __set_PSP(arg) {uint32_t __v=arg; asm ("MSR PSP, %0\n" :: "r" (__v));}
#define __set_PRIMASK(arg) {uint32_t __v=arg; asm ("MSR PRIMASK, %0\n" :: "r" (__v));}
#define __set_FAULTMASK(arg) {uint32_t __v=arg; asm ("MSR FAULTMASK, %0\n" :: "r" (__v));}
#define __set_BASEPRI(arg) {uint32_t __v=arg; asm ("MSR BASEPRI, %0\n" :: "r" (__v));}
#define __set_CONTORL(arg) {uint32_t __v=arg; asm ("MSR CONTROL, %0\nISB\n" :: "r" (__v));}
/* These functions and macros are alternative of above for user mode */
#if USE_SV_SERVICE
#define __enable_irq_user() asm volatile ("SVC #0\n") /* CPSIE i */
#define __disable_irq_user() asm volatile ("SVC #1\n") /* CPSID i */
#define __enable_irq_user() asm volatile ("SVC #2\n") /* CPSIE f */
#define __disable_irq_user() asm volatile ("SVC #3\n") /* CPSID f */
uint32_t __get_scs_reg (volatile uint32_t* reg); /* Read a register in SCS */
void __set_scs_reg (volatile uint32_t* reg, uint32_t val); /* Write a register in SCS */
#define __enable_irqn_user(n) __set_scs_reg(&ISER[((n) / 32)], 1 << ((n) % 32))
#define __disable_irqn_user(n) __set_scs_reg(&ISCR[((n) / 32)], 1 << ((n) % 32))
#define __test_irqn_enabled_user(n) (__get_scs_reg(&ISCR[(n) / 32]) & (1 << ((n) % 32)))
#define __set_irqn_user(n) __set_scs_reg(&ISPR[((n) / 32)], 1 << ((n) % 32))
#define __clear_irqn_user(n) __set_scs_reg(&ICPR[((n) / 32)], 1 << ((n) % 32))
#define __test_irqn_user(n) (__get_scs_reg(&ICPR[(n) / 32]) & (1 << ((n) % 32)))
#define __test_active_irqn_user(n) (__get_scs_reg(&IABR[(n) / 32]) & (1 << ((n) % 32)))
#define __set_irqn_priority_user(n,v) __set_scs_reg(&IPR[n], (v))
#define __set_faultn_priority_user(n,v) __set_scs_reg(&SHPR[(n) + 16], (v))
#endif
/* These functions/macros can be used at user/privileged mode */
#define __REV(arg) ({uint32_t __r, __v=arg; asm ("REV %0,%1\n" : "=r" (__r) : "r" (__v) ); __r;})
#define __REV16(arg) ({uint32_t __r, __v=arg; asm ("REV16 %0,%1\n" : "=r" (__r) : "r" (__v) ); __r;})
#define __REVSH(arg) ({uint32_t __r, __v=arg; asm ("REVSH %0,%1\n" : "=r" (__r) : "r" (__v) ); __r;})
#define __RBIT(arg) ({uint32_t __r, __v=arg; asm ("RBIT %0,%1\n" : "=r" (__r) : "r" (__v) ); __r;})
#define __LDREXB(p) ({uint8_t __r; asm ("LDREXB %0,[%1]\n" : "=r" (__r) : "r" (p)); __r;})
#define __LDREXH(p) ({uint16_t __r; asm ("LDREXH %0,[%1]\n" : "=r" (__r) : "r" (p)); __r;})
#define __LDREXW(p) ({uint32_t __r; asm ("LDREX %0,[%1]\n" : "=r" (__r) : "r" (p)); __r;})
#define __STREXB(d,p) ({register uint32_t __r asm("r2"); register uint8_t __d asm("r1") = d; register volatile uint8_t *__p asm("r0") = p; asm ("STREXB %0,%2,[%1]\n" : "=r" (__r) : "r" (__p), "r" (__d)); __r;})
#define __STREXH(d,p) ({register uint32_t __r asm("r2"); register uint16_t __d asm("r1") = d; register volatile uint16_t *__p asm("r0") = p; asm ("STREXH %0,%2,[%1]\n" : "=r" (__r) : "r" (p), "r" (__d)); __r;})
#define __STREXW(d,p) ({register uint32_t __r asm("r2"); register uint32_t __d asm("r1") = d; register volatile uint32_t *__p asm("r0") = p; asm ("STREX %0,%2,[%1]\n" : "=r" (__r) : "r" (p), "r" (__d)); __r;})
#define __CLREX() asm volatile ("CLREX\n")
#define __SEV() asm volatile ("SEV\n")
#define __WFE() asm volatile ("WFE\n")
#define __WFI() asm volatile ("WFI\n")
/* LPC176x IRQ number */
#define MemManage_IRQn (-12)
#define BusFault_IRQn (-11)
#define UsageFault_IRQn (-10)
#define SVC_IRQn (-5)
#define DebugMon_IRQn (-4)
#define PendSV_IRQn (-2)
#define SysTick_IRQn (-1)
#define WDT_IRQn 0
#define TIMER0_IRQn 1
#define TIMER1_IRQn 2
#define TIMER2_IRQn 3
#define TIMER3_IRQn 4
#define UART0_IRQn 5
#define UART1_IRQn 6
#define UART2_IRQn 7
#define UART3_IRQn 8
#define PWM1_IRQn 9
#define I2C0_IRQn 10
#define I2C1_IRQn 11
#define I2C2_IRQn 12
#define SPI_IRQn 13
#define SSP0_IRQn 14
#define SSP1_IRQn 15
#define PLL0_IRQn 16
#define RTC_IRQn 17
#define EINT0_IRQn 18
#define EINT1_IRQn 19
#define EINT2_IRQn 20
#define EINT3_IRQn 21
#define ADC_IRQn 22
#define BOD_IRQn 23
#define USB_IRQn 24
#define CAN_IRQn 25
#define GPDMA_IRQn 26
#define I2S_IRQn 27
#define ETHER_IRQn 28
#define RIT_IRQn 29
#define MCPWM_IRQn 30
#define QEI_IRQn 31
#define PLL1_IRQn 32
#define USBACT_IRQn 33
#define CANACT_IRQn 34
/* LPC176x Peripheral Divider */
#define __set_PCLKSEL(p,v) PCLKSEL[(p) / 16] = (PCLKSEL[(p) / 16] & ~(3 << ((p) * 2 % 32))) | (v << ((p) * 2 % 32))
#define PCLKDIV_4 0
#define PCLKDIV_1 1
#define PCLKDIV_2 2
#define PCLKDIV_8 3
#define PCLK_WDT 0
#define PCLK_TIMER0 1
#define PCLK_TIMER1 2
#define PCLK_UART0 3
#define PCLK_UART1 4
#define PCLK_PWM1 6
#define PCLK_I2C0 7
#define PCLK_SPI 8
#define PCLK_SSP1 10
#define PCLK_DAC 11
#define PCLK_ADC 12
#define PCLK_CAN1 13
#define PCLK_CAN2 14
#define PCLK_ACF 15
#define PCLK_QEI 16
#define PCLK_GPIOINT 17
#define PCLK_PCB 18
#define PCLK_I2C1 19
#define PCLK_SSP0 21
#define PCLK_TIMER2 22
#define PCLK_TIMER3 23
#define PCLK_UART2 24
#define PCLK_UART3 25
#define PCLK_I2C2 26
#define PCLK_I2S 27
#define PCLK_RIT 28
#define PCLK_SYSCON 29
#define PCLK_MC 30
/* LPC176x Pin Configuration */
#define __set_PINSEL(p,b,v) PINSEL[(p) * 2 + (b) / 16] = (PINSEL[(p) * 2 + (b) / 16] & ~(3 << ((b) * 2 % 32))) | (v << ((b) * 2 % 32))
#define __set_PINMODE(p,b,v) PINMODE[(p) * 2 + (b) / 16] = (PINMODE[(p) * 2 + (b) / 16] & ~(3 << ((b) * 2 % 32))) | (v << ((b) * 2 % 32))
#define __set_PINOD(p,b,v) PINOD[p] = (PINOD[p] & ~(1 << (b))) | ((v) << (b))
/* LPC176x Power Control */
#define __set_PCONP(p,v) PCONP = (PCONP & ~(1 << (p))) | (1 << (p))
#define PCTIM0 1
#define PCTIM1 2
#define PCUART0 3
#define PCUART1 4
#define PCPWM1 6
#define PCIIC0 7
#define PCSPI 8
#define PCRTC 9
#define PCSSP1 10
#define PCADC 12
#define PCCAN1 13
#define PCCAN2 14
#define PCGPIO 15
#define PCRIT 16
#define PCMCPWM 17
#define PCQEI 18
#define PCI2C1 19
#define PCSSP0 21
#define PCTIM2 22
#define PCTIM3 23
#define PCUART2 24
#define PCUART3 25
#define PCI2C2 26
#define PCI2S 27
#define PCGPDMA 29
#define PCENET 30
#define PCUSB 31
/*--------------------------------------------------------------*/
/* Misc Macros */
/*--------------------------------------------------------------*/
#define _BV(bit) (1<<(bit))
#define IMPORT_BIN(sect, file, sym) asm (\
".section " #sect "\n"\
".balign 4\n"\
".global " #sym "\n"\
#sym ":\n"\
".incbin \"" file "\"\n"\
".global _sizeof_" #sym "\n"\
".set _sizeof_" #sym ", . - " #sym "\n"\
".balign 4\n"\
".section \".text\"\n")
#define IMPORT_BIN_PART(sect, file, ofs, siz, sym) asm (\
".section " #sect "\n"\
".balign 4\n"\
".global " #sym "\n"\
#sym ":\n"\
".incbin \"" file "\"," #ofs "," #siz "\n"\
".global _sizeof_" #sym "\n"\
".set _sizeof_" #sym ", . - " #sym "\n"\
".balign 4\n"\
".section \".text\"\n")
/* Jump to secondary application */
#define JUMP_APP(appvt) asm (\
"LDR SP, [%0]\n" /* Initialize SP */\
"LDR PC, [%0, #4]\n" /* Go to reset vector */\
: : "r" (appvt))
#endif /* __LPC176x */