Firmware2/Marlin/frameworks/CMSIS/LPC1768/lib/chanfs/LPC176x.h
Chris Pepper a5cf3a190c bugfix-2.0.x critical fix (#7401)
* Fix mistake in gitignore file and add in missing core files.

The missing leading slash on "lib" meant all folders names lib in the directory tree are ignored, rather than just the top level PlatformIO lib folder

* Add LiquidCrystal Library and associated headers modified to compile.
2017-08-31 18:23:44 -05:00

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 */