打印
[ZLG-ARM]

LPC11xxcfg.h(V1.06)

[复制链接]
4887|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2010-8-18 01:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hotpower 于 2010-8-18 01:29 编辑

/*--------------------------------------------------------------------------
文   件   名 :  LPC11xxcfg.h
创   建   人 :  Cortex菜鸟HotPower@163.com
创 建 日  期 :  2010.7.8   18:18
最近修改日期 :  2010.8.16  18:33
创 建  地 点 : 西安大雁塔村队部
版   本   号 : V1.06 (红杏版)
修 改  原 因 : 控制所以位域到位控制, 随着CortexM0将实战于菜农的产品中,将逐步完善。
说        明 : LPC11xx.h虽比LPC213x.h有很大进步,但也只是菜农5年前的红杏级别。
          为与流行趋势接轨,故暂先增强之,最终菜农将弃之。
备        注 : 本头文件风格归属于菜农的《红杏出墙》系列,堪称“红杏级别”
                将本文件拷贝到安装目录下的\Keil\ARM\INC\NXP\LPC11xx内。
-------------------------------------------------------------------------------*/
#include <LPC11xx.h> //LPC11xxcfg.h暂且继承LPC11xx.h的一切定义
#ifndef __LPC11xxcfg_H__
#define __LPC11xxcfg_H__
#ifdef __cplusplus
extern "C" {
#endif
#if defined (__CC_ARM)
  #pragma anon_unions
#endif

typedef volatile uint32_t LPC_REG;// Hardware register definition
#define __noinit__ __attribute__((zero_init))//变量不初始化为0
typedef enum
{
__0 = (LPC_REG)0,
__1 = (LPC_REG)1,
__2 = (LPC_REG)2,
__3 = (LPC_REG)3,
__4 = (LPC_REG)4,
__5 = (LPC_REG)5,
__6 = (LPC_REG)6,
__7 = (LPC_REG)7,
__8 = (LPC_REG)8,
__9 = (LPC_REG)9,
__10 = (LPC_REG)10,
__11 = (LPC_REG)11,
__12 = (LPC_REG)12,
__13 = (LPC_REG)13,
__14 = (LPC_REG)14,
__15 = (LPC_REG)15,
__16 = (LPC_REG)16,
__17 = (LPC_REG)17,
__18 = (LPC_REG)18,
__19 = (LPC_REG)19,
__20 = (LPC_REG)20,
__21 = (LPC_REG)21,
__22 = (LPC_REG)22,
__23 = (LPC_REG)23,
__24 = (LPC_REG)24,
__25 = (LPC_REG)25,
__26 = (LPC_REG)26,
__27 = (LPC_REG)27,
__28 = (LPC_REG)28,
__29 = (LPC_REG)29,
__30 = (LPC_REG)30,
__31 = (LPC_REG)31
}Number_enum;
typedef volatile struct
{
  LPC_REG Bit0:  1;
  LPC_REG Bit1:  1;
  LPC_REG Bit2:  1;
  LPC_REG Bit3:  1;
  LPC_REG Bit4:  1;
  LPC_REG Bit5:  1;
  LPC_REG Bit6:  1;
  LPC_REG Bit7:  1;
  LPC_REG Bit8:  1;
  LPC_REG Bit9:  1;
  LPC_REG Bit10:  1;
  LPC_REG Bit11:  1;
  LPC_REG Bit12:  1;
  LPC_REG Bit13:  1;
  LPC_REG Bit14:  1;
  LPC_REG Bit15:  1;
  LPC_REG Bit16:  1;
  LPC_REG Bit17:  1;
  LPC_REG Bit18:  1;
  LPC_REG Bit19:  1;
  LPC_REG Bit20:  1;
  LPC_REG Bit21:  1;
  LPC_REG Bit22:  1;
  LPC_REG Bit23:  1;
  LPC_REG Bit24:  1;
  LPC_REG Bit25:  1;
  LPC_REG Bit26:  1;
  LPC_REG Bit27:  1;
  LPC_REG Bit28:  1;
  LPC_REG Bit29:  1;
  LPC_REG Bit30:  1;
  LPC_REG Bit31:  1;
}LPC_BITs;
//===============================================//
typedef volatile struct
{
  LPC_REG Pin0:  1;
  LPC_REG Pin1:  1;
  LPC_REG Pin2:  1;
  LPC_REG Pin3:  1;
  LPC_REG Pin4:  1;
  LPC_REG Pin5:  1;
  LPC_REG Pin6:  1;
  LPC_REG Pin7:  1;
  LPC_REG Pin8:  1;
  LPC_REG Pin9:  1;
  LPC_REG Pin10:  1;
  LPC_REG Pin11:  1;
  LPC_REG Pin12:  1;
  LPC_REG Pin13:  1;
  LPC_REG Pin14:  1;
  LPC_REG Pin15:  1;
  LPC_REG Pin16:  1;
  LPC_REG Pin17:  1;
  LPC_REG Pin18:  1;
  LPC_REG Pin19:  1;
  LPC_REG Pin20:  1;
  LPC_REG Pin21:  1;
  LPC_REG Pin22:  1;
  LPC_REG Pin23:  1;
  LPC_REG Pin24:  1;
  LPC_REG Pin25:  1;
  LPC_REG Pin26:  1;
  LPC_REG Pin27:  1;
  LPC_REG Pin28:  1;
  LPC_REG Pin29:  1;
  LPC_REG Pin30:  1;
  LPC_REG Pin31:  1;
}LPC_PINs;
//============================================
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_BITs Bits;
}LPC_REG_BITs;
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_PINs Bits;
}LPC_REG_PINs;
//============================================
typedef enum
{
  IER_RBR       = (LPC_REG)0,//使能RDA中断
  IER_THRE      = (LPC_REG)1,//使能THRE中断
  IER_RLS       = (LPC_REG)2,//使能RX线状态中断
  IER_RESERVED0 = (LPC_REG)3,
  IER_ABEO      = (LPC_REG)8,//使能自动波特率结束中断
  IER_ABTO      = (LPC_REG)9//使能自动波特率超时中断
}UARTIER_enum;
typedef volatile struct
{
  LPC_REG RBR:  1;//使能RDA中断
  LPC_REG THRE: 1;//使能THRE中断
  LPC_REG RLS:  1;//使能RX线状态中断
  LPC_REG RESERVED0:  5;
  LPC_REG ABEO: 1;//使能自动波特率结束中断
  LPC_REG ABTO: 1;//使能自动波特率超时中断
  LPC_REG RESERVED1:  22;
}LPC_IER_BITs;//UART中断使能
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_IER_BITs Bits;
}LPC_IER_REG_BITs;//UART中断使能
//============================================
typedef enum
{
  IIR_IntStatus  = (LPC_REG)0,//中断状态
  IIR_IntID      = (LPC_REG)1,//中断ID
  IIR_Reserved0  = (LPC_REG)4,
  IIR_FIFOEnable = (LPC_REG)6,//使能自动波特率结束中断
  IIR_ABEOInt    = (LPC_REG)8,//使能自动波特率结束中断
  IIR_ABTOInt    = (LPC_REG)9//使能自动波特率超时中断
}UARTIIR_enum;
typedef enum
{
  IIR_PEND     = (LPC_REG)1,
  IIR_RLS  = (LPC_REG)3,
  IIR_RDA  = (LPC_REG)2,
  IIR_CTI  = (LPC_REG)6,
  IIR_THRE     = (LPC_REG)1
}UARTIIR_IntID_enum;
typedef volatile struct
{
  LPC_REG IntStatus:  1;//中断状态
  LPC_REG IntID:  3;//中断ID
  LPC_REG Reserved0:  2;
  LPC_REG FIFOEnable: 2;//使能自动波特率结束中断
  LPC_REG ABEOInt: 1;//使能自动波特率结束中断
  LPC_REG ABTOInt: 1;//使能自动波特率超时中断
  LPC_REG Reserved1:  22;
}LPC_IIR_BITs;//UART中断ID
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_IIR_BITs Bits;
}LPC_IIR_REG_BITs;//UART中断ID
//============================================
typedef enum
{
  FCR_FIFOEnable      = (LPC_REG)0,
  FCR_RXFIFOReset     = (LPC_REG)1,
  FCR_TXFIFOReset     = (LPC_REG)2,
  FCR_RESERVED0       = (LPC_REG)3,
  FCR_RXTriggerLevel  = (LPC_REG)6
}UARTFCR_enum;
typedef volatile struct
{
  LPC_REG FIFOEnable: 1;
  LPC_REG RXFIFOReset: 1;
  LPC_REG TXFIFOReset: 1;
  LPC_REG RESERVED0:  3;
  LPC_REG RXTriggerLevel: 2;
  LPC_REG RESERVED1:  24;
}LPC_FCR_BITs;//UARTFIFO控制
typedef volatile union
{
  __O LPC_REG  Regs;
  __O LPC_FCR_BITs Bits;
}LPC_FCR_REG_BITs;//UARTFIFO控制
//============================================
typedef enum
{
  LCR_WordLengthSelect  = (LPC_REG)0,//x位字符长度 0-5位 1-6位 2-7位 3-8位
  LCR_StopBitSelect     = (LPC_REG)2,//x个停止位 0-1个 1-2个
  LCR_ParityEnable      = (LPC_REG)3,//校验位使能
  LCR_ParitySelect      = (LPC_REG)4,//校验位选择
  LCR_BreakControl      = (LPC_REG)6,//间隔传输
  LCR_DLAB              = (LPC_REG)7//除数锁存器访问使能
}UARTLCR_enum;
typedef volatile struct
{
  LPC_REG WordLengthSelect: 2;//0~1 x位字符长度 0-5位 1-6位 2-7位 3-8位
  LPC_REG StopBitSelect: 1;//2~2 x个停止位 0-1个 1-2个
  LPC_REG ParityEnable: 1;//3~3 校验位使能
  LPC_REG ParitySelect: 2;//4~5校验位选择
  LPC_REG BreakControl: 1;//6~6 间隔传输
  LPC_REG DLAB: 1;//7~7 除数锁存器访问使能
  LPC_REG Reserved:  24;
}LPC_LCR_BITs;//UART线控制
typedef volatile union
{
  __O LPC_REG  Regs;
  __O LPC_LCR_BITs Bits;
}LPC_LCR_REG_BITs;//UART线控制
//============================================
typedef enum
{
  LSR_RDR  = (LPC_REG)0,//待读数据
  LSR_OE   = (LPC_REG)1,//溢出错误
  LSR_PE   = (LPC_REG)2,//校验位错误
  LSR_FE   = (LPC_REG)3,//帧错
  LSR_BI   = (LPC_REG)4,//间隔中断
  LSR_THRE = (LPC_REG)5,
  LSR_TEMT = (LPC_REG)6,
  LSR_RXFE = (LPC_REG)7
}UARTLSR_enum;
typedef volatile struct
{
  LPC_REG RDR: 1;//待读数据
  LPC_REG OE: 1;//溢出错误
  LPC_REG PE: 1;//校验位错误
  LPC_REG FE: 1;//帧错
  LPC_REG BI: 1;//间隔中断
  LPC_REG THRE: 1;
  LPC_REG TEMT: 1;
  LPC_REG RXFE: 1;
  LPC_REG RESERVED:  24;
}LPC_LSR_BITs;//UART线状态
typedef volatile union
{
  __O LPC_REG  Regs;
  __O LPC_LSR_BITs Bits;
}LPC_LSR_REG_BITs;//UART线状态
//============================================
typedef enum
{
UARTFDR_DIVADDVAL =  (LPC_REG)0,
UARTFDR_MULVAL    =  (LPC_REG)4
}UARTFDR_enum;
typedef volatile struct
{
  LPC_REG DIVADDVAL: 4;//产生波特率的预分频除数值
  LPC_REG MULVAL: 4;//波特率预分频乘数值
  LPC_REG RESERVED:  24;
}LPC_FDR_BITs;//UART小数分频器
typedef volatile union
{
  __O LPC_REG Regs;
  __O LPC_FDR_BITs Bits;
}LPC_FDR_REG_BITs;//UART小数分频器
//============================================
typedef enum
{
CONSET_AA     =  (LPC_REG)2,//应答标志。
CONSET_SI     =  (LPC_REG)3,//I2C中断标志。
CONSET_STO    =  (LPC_REG)4,//停止标志。
CONSET_STA    =  (LPC_REG)5,//起始标志。
CONSET_I2EN   =  (LPC_REG)6//I2C接口使能。
}I2CCONSET_enum;
typedef volatile struct
{
  LPC_REG RESERVED0:  2;
  LPC_REG AA: 1;//声明应答标志
  LPC_REG SI: 1;//中断标志
  LPC_REG STO: 1;//停止标志
  LPC_REG STA: 1;//起始标志
  LPC_REG I2EN: 1;//接口使能
  LPC_REG RESERVED1:  25;
}LPC_CONSET_BITs;//I2C控制置位寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_CONSET_BITs Bits;
}LPC_CONSET_REG_BITs;//I2C控制置位寄存器
//============================================
typedef enum
{
I2CSTAT_Status     =  (LPC_REG)3//实际状态信息。
}I2CSTAT_enum;
typedef volatile struct
{
  LPC_REG RESERVED0:  3;
  LPC_REG Status: 5;//实际状态信息
  LPC_REG RESERVED1:  24;
}LPC_STAT_BITs;//I2C控制置位寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STAT_BITs Bits;
}LPC_STAT_REG_BITs;//I2C控制置位寄存器
//============================================
typedef struct _LPCS_I2C {
  __IO LPC_CONSET_REG_BITs CONSET;//I2C控制置位寄存器
  __I  LPC_STAT_REG_BITs STAT;//I2C状态寄存器
  __IO LPC_REG_BITs DAT;//I2C数据寄存器
  __IO LPC_REG_BITs ADR0;//I2C从地址寄存器0
  __IO LPC_REG_BITs SCLH;//SCH占空比寄存器高半字
  __IO LPC_REG_BITs SCLL;//SCL占空比寄存器低半字
  __O  LPC_REG_BITs CONCLR;//I2C控制清零寄存器
  __IO LPC_REG_BITs MMCTRL;//监控模式控制寄存器
  __IO LPC_REG_BITs ADR1;//I2C从地址寄存器1
  __IO LPC_REG_BITs ADR2;//I2C从地址寄存器2
  __IO LPC_REG_BITs ADR3;//I2C从地址寄存器3
  __I  LPC_REG_BITs DATA_BUFFER;//数据缓冲寄存器
  __IO LPC_REG_BITs MASK0;//从地址屏蔽寄存器0
  __IO LPC_REG_BITs MASK1;//从地址屏蔽寄存器1
  __IO LPC_REG_BITs MASK2;//从地址屏蔽寄存器2
  __IO LPC_REG_BITs MASK3;//从地址屏蔽寄存器3
}LPCS_I2C, *LPCPS_I2C;//
#define LPC_BASE_I2C  ((LPCPS_I2C) LPC_I2C_BASE)//定义硬件结构指针(硬件地址)
#define I2C (*LPC_BASE_I2C)//定位全局结构变量I2C
//============================================
typedef struct _LPCS_UART {
  union {//地址冲突处理
    __I LPC_REG_BITs RBR;//接收缓冲
    __O  LPC_REG_BITs THR;//发送保持
    __IO LPC_REG_BITs DLL;//除数锁存低位
  };
  union {//地址冲突处理
    __IO LPC_IER_REG_BITs IER;//中断使能
    __IO LPC_REG_BITs DLM;//除数锁存高位
  };
  union {//地址冲突处理
    __I LPC_IIR_REG_BITs IIR;//中断ID
    __O LPC_REG_BITs FCR;//FIFO控制
  };
  __IO LPC_LCR_REG_BITs LCR;//线控制
  __IO LPC_REG_BITs MCR;//Modem控制
  __I  LPC_LSR_REG_BITs LSR;//线状态
  __I  LPC_REG_BITs MSR;//Modem状态
  __IO LPC_REG_BITs SCR;//高速缓存
  __IO LPC_REG_BITs ACR;//自动波特率控制
  LPC_REG RESERVED0; //0x4000 8024 保留1个空位
  __IO LPC_FDR_REG_BITs FDR;//小数分频器
  LPC_REG RESERVED1; //0x4000 802C保留1个空位
  __IO LPC_REG_BITs TER;//发送使能
  LPC_REG RESERVED2[6];//0x4000 8034保留6个空位
  __IO LPC_REG_BITs RS485CTRL;//RS-485/EIA-485控制
  __IO LPC_REG_BITs ADRMATCH;//RS-485/EIA-485地址匹配
  __IO LPC_REG_BITs RS485DLY;//RS-485/EIA-485方向控制延迟
  __IO LPC_REG_BITs FIFOLVL;//FIFO水平寄存器
}LPCS_UART, *LPCPS_UART;
#define LPC_BASE_UART0  ((LPCPS_UART)  LPC_UART_BASE)//定义硬件结构指针(硬件地址)
#define U0 (*LPC_BASE_UART0)//定位全局结构变量U0
//=================================================//
typedef enum
{
SYSTick_ENABLE     =  (LPC_REG)0,//系统节拍计数器使能。
SYSTick_TICKINT    =  (LPC_REG)1,//系统节拍中断使能
SYSTick_COUNTFLAG  =  (LPC_REG)16,//系统节拍计数器标志
SYSTick_RELOAD     =  (LPC_REG)0,//该值在系统节拍计数器倒计数到0时装入该计数器
SYSTick_CURRENT    =  (LPC_REG)0,//读该寄存器会返回系统节拍计数器的当前值
SYSTick_TENMS      =  (LPC_REG)0,
SYSTick_SKEW       =  (LPC_REG)30,
SYSTick_NOREF      =  (LPC_REG)31
}SYSTick_enum;
typedef volatile struct
{
  LPC_REG ENABLE:      1;//系统节拍计数器使能
  LPC_REG TICKINT:     1;//系统节拍中断使能
  LPC_REG RESERVED0:  14;
  LPC_REG COUNTFLAG:   1;//系统节拍计数器标志
  LPC_REG RESERVED1:  15;
}LPC_STCTRL_BITs;//系统定时器控制和状态寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STCTRL_BITs Bits;
}LPC_STCTRL_REG_BITs;//系统定时器控制和状态寄存器
//=========================================
typedef volatile struct
{
  LPC_REG RELOAD:     24;//该值在系统节拍计数器倒计数到0时装入该计数器
  LPC_REG RESERVED0:   8;
}LPC_STRELOAD_BITs;//系统定时器控制和状态寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STRELOAD_BITs Bits;
}LPC_STRELOAD_REG_BITs;//系统定时器控制和状态寄存器
//=========================================
typedef volatile struct
{
  LPC_REG CURRENT:     24;//读该寄存器会返回系统节拍计数器的当前值
  LPC_REG RESERVED0:   8;
}LPC_STCURR_BITs;//系统定时器当前值寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STCURR_BITs Bits;
}LPC_STCURR_REG_BITs;//系统定时器当前值寄存器
//=========================================
typedef volatile struct
{
  LPC_REG TENMS:      24;
  LPC_REG RESERVED0:   6;
  LPC_REG SKEW:        1;
  LPC_REG NOREF:       1;
}LPC_STCALIB_BITs;//系统定时器校准值寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STCALIB_BITs Bits;
}LPC_STCALIB_REG_BITs;//系统定时器校准值寄存器
typedef struct _LPCS_SYSTick {//系统节拍定时器
  __IO LPC_STCTRL_REG_BITs STCTRL;//系统定时器控制和状态寄存器
  __IO LPC_STRELOAD_REG_BITs STRELOAD;//系统定时器重载值寄存器
  __IO LPC_STCURR_REG_BITs STCURR;//系统定时器当前值寄存器
  __IO LPC_STCALIB_REG_BITs STCALIB;//系统定时器校准值寄存器
}LPCS_SYSTick, *LPCPS_SYSTick;
#define LPC_BASE_SYSTick  ((LPCPS_SYSTick) 0xE000E010)//定义硬件结构指针(硬件地址)
#define SYSTick (*LPC_BASE_SYSTick)//定位全局结构变量SYSTick

//=================================================//
typedef struct _LPCS_TIMER {//定时器
  __IO LPC_REG IR;//中断寄存器
  __IO LPC_REG TCR;//定时器控制寄存器
  __IO LPC_REG TC;//定时器计数器
  __IO LPC_REG PR;//预分频寄存器
  __IO LPC_REG PC;//预分频计数器
  __IO LPC_REG MCR;//匹配控制寄存器
  __IO LPC_REG MR0;//匹配寄存器0
  __IO LPC_REG MR1;//匹配寄存器1
  __IO LPC_REG MR2;//匹配寄存器2
  __IO LPC_REG MR3;//匹配寄存器3
  __IO LPC_REG CCR;//捕获控制寄存器
  __IO LPC_REG CR0;//捕获寄存器0
  __IO LPC_REG CR1;//捕获寄存器1
  __IO LPC_REG CR2;//捕获寄存器2
  __IO LPC_REG CR3;//捕获寄存器3
  __IO LPC_REG EMR;//外部匹配寄存器
  __IO LPC_REG Reserved[12]; //保留12个空位
  __IO LPC_REG CTCR;//计数控制寄存器
  __IO LPC_REG PWMC;//PWM控制寄存器
}LPCS_TIMER, *LPCPS_TIMER;
#define LPC_BASE_TMR16B0  ((LPCPS_TIMER)  LPC_CT16B0_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_TMR16B1  ((LPCPS_TIMER)  LPC_CT16B1_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_TMR32B0  ((LPCPS_TIMER)  LPC_CT32B0_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_TMR32B1  ((LPCPS_TIMER)  LPC_CT32B1_BASE)//定义硬件结构指针(硬件地址)
#define T0 (*LPC_BASE_TMR16B0)//定位全局结构变量T0
#define T1 (*LPC_BASE_TMR16B1)//定位全局结构变量T1
#define T2 (*LPC_BASE_TMR32B0)//定位全局结构变量T2
#define T3 (*LPC_BASE_TMR32B1)//定位全局结构变量T3
#define LPC_BASE_TIMERx(x) ((LPCPS_TIMER)(LPC_CT16B0_BASE + (x * (LPC_CT16B1_BASE - LPC_CT16B0_BASE))))//定义硬件结构指针(硬件地址)
#define Tx(x) (*(LPC_BASE_TIMERx(x)))//定位全局结构变量Tx
//===============================================//
typedef enum
{
IOCON_FUNC         =  (LPC_REG)0,
IOCON_DSRLOC       =  (LPC_REG)0,
IOCON_DCDLOC       =  (LPC_REG)0,
IOCON_RILOC        =  (LPC_REG)0,
IOCON_MODE         =  (LPC_REG)3,
IOCON_HYS          =  (LPC_REG)5,
IOCON_ADMODE    =  (LPC_REG)7,
IOCON_I2CMODE      =  (LPC_REG)8,
IOCON_PIO          =  (LPC_REG)0,
IOCON_PIO2_6       =  (LPC_REG)0,
IOCON_PIO2_0       =  (LPC_REG)0,
IOCON_PIO2_0_DTR   =  (LPC_REG)1,
IOCON_PIO2_0_SSEL1 =  (LPC_REG)2,
// IOCON_DTR          =  (LPC_REG)1,
IOCON_SSEL1        =  (LPC_REG)2,
IOCON_PIO0_0_RESET =  (LPC_REG)0,
IOCON_RESET        =  (LPC_REG)0,
IOCON_PIO0_0       =  (LPC_REG)1,
IOCON_PIO0_1       =  (LPC_REG)0,
IOCON_PIO0_1_CLKOUT =  (LPC_REG)1,
IOCON_PIO0_1_CT32B0_MAT2 = (LPC_REG)2,
IOCON_CLKOUT       =  (LPC_REG)1,
IOCON_CT32B0_MAT2  =  (LPC_REG)2,
IOCON_PIO1_8       =  (LPC_REG)0,
IOCON_PIO1_8_CT16B1_CAP0 =  (LPC_REG)1,
IOCON_CT16B1_CAP0  =  (LPC_REG)1,
IOCON_PIO0_2       =  (LPC_REG)0,
IOCON_PIO0_2_SSEL0 =  (LPC_REG)1,
IOCON_PIO0_2_CT16B0_CAP0 =  (LPC_REG)2,
IOCON_SSEL0        =  (LPC_REG)1,
IOCON_CT16B0_CAP0  =  (LPC_REG)2,
IOCON_PIO2_7       =  (LPC_REG)0,
IOCON_PIO2_8       =  (LPC_REG)0,
IOCON_PIO2_1       =  (LPC_REG)0,
IOCON_PIO2_1_DSR   =  (LPC_REG)1,
IOCON_PIO2_1_SCK1  =  (LPC_REG)2,
// IOCON_DSR          =  (LPC_REG)1,
IOCON_SCK1         =  (LPC_REG)2,
IOCON_PIO0_3       =  (LPC_REG)0,
IOCON_PIO0_4       =  (LPC_REG)0,
IOCON_PIO0_4_SCL   =  (LPC_REG)1,
IOCON_I2C_SCL      =  (LPC_REG)1,
IOCON_SCL          =  (LPC_REG)1,
IOCON_PIO0_4_I2CMODE      = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_PIO0_4_PIOMODE      = (LPC_REG)1,//PIO0_4
IOCON_PIO0_4_PLUSI2CMODE  = (LPC_REG)2,//快速模式plus I2C
IOCON_PIO0_4_I2CMODE_STD  = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_PIO0_4_I2CMODE_PIO  = (LPC_REG)1,//PIO0_4
IOCON_PIO0_4_I2CMODE_PLUS = (LPC_REG)2,//快速模式plus I2C

IOCON_PIO0_5       =  (LPC_REG)0,
IOCON_PIO0_5_SDA   =  (LPC_REG)1,
IOCON_I2C_SDA      =  (LPC_REG)1,
IOCON_SDA          =  (LPC_REG)1,
IOCON_PIO0_5_I2CMODE      = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_PIO0_5_PIOMODE      = (LPC_REG)1,//PIO0_5
    IOCON_PIO0_5_PLUSI2CMODE  = (LPC_REG)2,//快速模式plus I2C
IOCON_PIO0_5_I2CMODE_STD  = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_PIO0_5_I2CMODE_PIO  = (LPC_REG)1,//PIO0_4
IOCON_PIO0_5_I2CMODE_PLUS = (LPC_REG)2,//快速模式plus I2C
IOCON_SCL_I2CMODE         = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_SDA_I2CMODE         = (LPC_REG)0,//标准模式/快速模式I2C
IOCON_SCL_PIOMODE         = (LPC_REG)1,//PIO0_4
IOCON_SDA_PIOMODE         = (LPC_REG)1,//PIO0_5
   
IOCON_PIO1_9           =  (LPC_REG)0,
IOCON_PIO1_9_CT16B1_MAT0  =  (LPC_REG)1,
IOCON_CT16B1_MAT0         =  (LPC_REG)1,
IOCON_PIO3_4           =  (LPC_REG)0,
IOCON_PIO2_4           =  (LPC_REG)0,
IOCON_PIO2_5           =  (LPC_REG)0,
IOCON_PIO3_5           =  (LPC_REG)0,
IOCON_PIO0_6           =  (LPC_REG)0,
IOCON_PIO0_6_SCK0         =  (LPC_REG)2,
IOCON_SCK0                =  (LPC_REG)2,
IOCON_PIO0_7           =  (LPC_REG)0,
IOCON_PIO0_7_CTS         =  (LPC_REG)1,
IOCON_CTS                 =  (LPC_REG)1,
IOCON_PIO2_9           =  (LPC_REG)0,
IOCON_PIO2_10           =  (LPC_REG)0,
IOCON_PIO2_2           =  (LPC_REG)0,
IOCON_PIO2_2_DCD         =  (LPC_REG)1,
IOCON_PIO2_2_MISO1        =  (LPC_REG)2,
// IOCON_DCD                 =  (LPC_REG)1,
IOCON_MISO1            =  (LPC_REG)2,
IOCON_PIO0_8           =  (LPC_REG)0,
IOCON_PIO0_8_MISO0        =  (LPC_REG)1,
IOCON_PIO0_8_CT16B0_MAT0  =  (LPC_REG)2,
IOCON_MISO0             =  (LPC_REG)1,
IOCON_CT16B0_MAT0        =  (LPC_REG)2,
IOCON_PIO0_9           =  (LPC_REG)0,
IOCON_PIO0_9_MOSI0        =  (LPC_REG)1,
IOCON_PIO0_9_CT16B0_MAT1  =  (LPC_REG)2,
IOCON_MOSI0             =  (LPC_REG)1,
IOCON_CT16B0_MAT1        =  (LPC_REG)2,
IOCON_JTAG_TCK_PIO0_10_SWCLK    =  (LPC_REG)0,
IOCON_JTAG_TCK_PIO0_10           =  (LPC_REG)1,
IOCON_JTAG_TCK_PIO0_10_SCK0       =  (LPC_REG)2,
IOCON_JTAG_TCK_PIO0_10_CT16B0_MAT2 =  (LPC_REG)3,
IOCON_JTAG_TCK_SWCLK    =  (LPC_REG)0,
IOCON_JTAG_TCK           =  (LPC_REG)1,
IOCON_JTAG_TCK_SCK0       =  (LPC_REG)2,
IOCON_JTAG_TCK_CT16B0_MAT2 =  (LPC_REG)3,
IOCON_PIO0_10_SWCLK       =  (LPC_REG)0,
IOCON_PIO0_10           =  (LPC_REG)1,
IOCON_PIO0_10_SCK0        =  (LPC_REG)2,
IOCON_PIO0_10_CT16B0_MAT2 =  (LPC_REG)3,
IOCON_SWCLK       =  (LPC_REG)0,
IOCON_CT16B0_MAT2 =  (LPC_REG)3,
IOCON_PIO1_10            =  (LPC_REG)0,
IOCON_PIO1_10_AD6         =  (LPC_REG)1,
IOCON_PIO1_10_CT16B1_MAT1 =  (LPC_REG)2,
IOCON_AD6         =  (LPC_REG)1,
IOCON_CT16B1_MAT1 =  (LPC_REG)2,
IOCON_PIO2_11            =  (LPC_REG)0,
IOCON_PIO2_11_SCK0        =  (LPC_REG)1,
IOCON_JTAG_TDI_PIO0_11_TDI    =  (LPC_REG)0,
IOCON_JTAG_TDI_PIO0_11        =  (LPC_REG)1,
IOCON_JTAG_TDI_PIO0_11_AD0    =  (LPC_REG)2,
IOCON_JTAG_TDI_PIO0_11_CT32B0_MAT3  =  (LPC_REG)3,
IOCON_JTAG_TDI_TDI    =  (LPC_REG)0,
IOCON_JTAG_TDI        =  (LPC_REG)1,
IOCON_JTAG_TDI_AD0    =  (LPC_REG)2,
IOCON_JTAG_TDI_CT32B0_MAT3  =  (LPC_REG)3,
IOCON_PIO0_11_TDI    =  (LPC_REG)0,
IOCON_PIO0_11        =  (LPC_REG)1,
IOCON_PIO0_11_AD0    =  (LPC_REG)2,
IOCON_PIO0_11_CT32B0_MAT3   =  (LPC_REG)3,
IOCON_TDI    =  (LPC_REG)0,
IOCON_AD0    =  (LPC_REG)2,
IOCON_CT32B0_MAT3   =  (LPC_REG)3,
IOCON_JTAG_TMS_PIO1_0_TMS    =  (LPC_REG)0,
IOCON_JTAG_TMS_PIO1_0        =  (LPC_REG)1,
IOCON_JTAG_TMS_PIO1_0_AD1    =  (LPC_REG)2,
IOCON_JTAG_TMS_PIO1_0_CT32B1_CAP0  =  (LPC_REG)3,
IOCON_JTAG_TMS_TMS    =  (LPC_REG)0,
IOCON_JTAG_TMS        =  (LPC_REG)1,
IOCON_JTAG_TMS_AD1    =  (LPC_REG)2,
IOCON_JTAG_TMS_CT32B1_CAP0  =  (LPC_REG)3,
IOCON_PIO1_0_TMS    =  (LPC_REG)0,
IOCON_PIO1_0        =  (LPC_REG)1,
IOCON_PIO1_0_AD1    =  (LPC_REG)2,
IOCON_PIO1_0_CT32B0_MAT3   =  (LPC_REG)3,
IOCON_TMS    =  (LPC_REG)0,
IOCON_AD1    =  (LPC_REG)2,
IOCON_CT32B1_CAP0   =  (LPC_REG)3,

IOCON_JTAG_TDO_PIO1_1_TDO    =  (LPC_REG)0,
IOCON_JTAG_TDO_PIO1_1        =  (LPC_REG)1,
IOCON_JTAG_TDO_PIO1_1_AD2    =  (LPC_REG)2,
IOCON_JTAG_TDO_PIO1_1_CT32B1_MAT0  =  (LPC_REG)3,
IOCON_JTAG_TDO_TDO    =  (LPC_REG)0,
IOCON_JTAG_TDO        =  (LPC_REG)1,
IOCON_JTAG_TDO_AD2    =  (LPC_REG)2,
IOCON_JTAG_TDO_CT32B1_MAT0  =  (LPC_REG)3,
IOCON_PIO1_1_TDO    =  (LPC_REG)0,
IOCON_PIO1_1        =  (LPC_REG)1,
IOCON_PIO1_1_AD2    =  (LPC_REG)2,
IOCON_PIO1_1_CT32B1_MAT0   =  (LPC_REG)3,
IOCON_TDO    =  (LPC_REG)0,
IOCON_AD2    =  (LPC_REG)2,
IOCON_CT32B1_MAT0   =  (LPC_REG)3,

IOCON_JTAG_nTRST_PIO1_2_TRST    =  (LPC_REG)0,
IOCON_JTAG_nTRST_PIO1_2        =  (LPC_REG)1,
IOCON_JTAG_nTRST_PIO1_2_AD3    =  (LPC_REG)2,
IOCON_JTAG_nTRST_PIO1_2_CT32B1_MAT1  =  (LPC_REG)3,
IOCON_JTAG_nTRST_TRST    =  (LPC_REG)0,
IOCON_JTAG_nTRST        =  (LPC_REG)1,
IOCON_JTAG_nTRST_AD3    =  (LPC_REG)2,
IOCON_JTAG_nTRST_CT32B1_MAT1    =  (LPC_REG)3,
IOCON_PIO1_2_TRST    =  (LPC_REG)0,
IOCON_PIO1_2        =  (LPC_REG)1,
IOCON_PIO1_2_AD3    =  (LPC_REG)2,
IOCON_PIO1_2_CT32B1_MAT1   =  (LPC_REG)3,
IOCON_TRST    =  (LPC_REG)0,
IOCON_AD3    =  (LPC_REG)2,
IOCON_CT32B1_MAT1   =  (LPC_REG)3,
IOCON_PIO3_0        =  (LPC_REG)0,
IOCON_PIO3_0_DTR      =  (LPC_REG)1,
IOCON_DTR          =  (LPC_REG)1,
IOCON_PIO3_1        =  (LPC_REG)0,
IOCON_PIO3_1_DSR      =  (LPC_REG)1,
IOCON_DSR          =  (LPC_REG)1,
IOCON_PIO2_3        =  (LPC_REG)0,
IOCON_PIO2_3_MOSI1    =  (LPC_REG)0,
IOCON_PIO2_3_RI      =  (LPC_REG)1,
IOCON_MOSI1        =  (LPC_REG)0,
// IOCON_RI              =  (LPC_REG)1,
IOCON_SWDIO_PIO1_3_SWDIO =  (LPC_REG)0,
IOCON_SWDIO_PIO1_3       =  (LPC_REG)1,
IOCON_SWDIO_PIO1_3_AD4   =  (LPC_REG)2,
IOCON_SWDIO_PIO1_3_CT32B1_MAT2 =  (LPC_REG)3,
IOCON_PIO1_3_SWDIO =  (LPC_REG)0,
IOCON_PIO1_3       =  (LPC_REG)1,
IOCON_PIO1_3_AD4   =  (LPC_REG)2,
IOCON_PIO1_3_CT32B1_MAT2 =  (LPC_REG)3,
IOCON_SWDIO =  (LPC_REG)0,
IOCON_AD4   =  (LPC_REG)2,
IOCON_CT32B1_MAT2 =  (LPC_REG)3,
IOCON_PIO1_4        =  (LPC_REG)0,
IOCON_PIO1_4_AD5      =  (LPC_REG)1,
IOCON_PIO1_4_CT32B1_MAT3 =  (LPC_REG)2,
IOCON_AD5      =  (LPC_REG)1,
IOCON_CT32B1_MAT3 =  (LPC_REG)2,

IOCON_PIO1_11        =  (LPC_REG)0,
IOCON_PIO1_11_AD7     =  (LPC_REG)1,
IOCON_AD7      =  (LPC_REG)1,
IOCON_PIO3_2        =  (LPC_REG)0,
IOCON_PIO3_2_DCD     =  (LPC_REG)1,
IOCON_DCD      =  (LPC_REG)1,
IOCON_PIO1_5        =  (LPC_REG)0,
IOCON_PIO1_5_RTS         =  (LPC_REG)1,
IOCON_PIO1_5_CT32B0_CAP0  =  (LPC_REG)2,
IOCON_RTS          =  (LPC_REG)1,
IOCON_CT32B0_CAP0      =  (LPC_REG)2,
IOCON_PIO1_6        =  (LPC_REG)0,
IOCON_PIO1_6_RXD         =  (LPC_REG)1,
IOCON_PIO1_6_CT32B0_MAT0  =  (LPC_REG)2,
IOCON_RXD          =  (LPC_REG)1,
IOCON_CT32B0_MAT0      =  (LPC_REG)2,
IOCON_PIO1_7        =  (LPC_REG)0,
IOCON_PIO1_7_TXD         =  (LPC_REG)1,
IOCON_PIO1_7_CT32B0_MAT1  =  (LPC_REG)2,
IOCON_TXD          =  (LPC_REG)1,
IOCON_CT32B0_MAT1      =  (LPC_REG)2,
IOCON_PIO3_3        =  (LPC_REG)0,
IOCON_PIO3_3_RI         =  (LPC_REG)1,
IOCON_RI              =  (LPC_REG)1,
}IOCON_FUNC_enum;
typedef enum
{
IOCON_DOWN  = 1,//下拉电阻
IOCON_UP    = 2,//上拉电阻
}IOCON_MODE_enum;
typedef volatile struct
{
  LPC_REG FUNC:     3;//0~2选择管脚功能PIOn_m 0-选择PIOn_m X-保留
  LPC_REG MODE:     2;//3~4选择功能模式 0-无 1-下拉电阻 2-上拉电阻 3-中继模式
  LPC_REG HYS:      1;//5~5滞后作用 0-禁能 1-使能
  LPC_REG RESERVED1:1;//6~6
  LPC_REG ADMODE:   1;//7~7 ADC PIO1_10,PIO0_11,PIO1_0
  LPC_REG I2CMODE:  2;//8~9 I2C
  LPC_REG RESERVED2:14;//10~31
}LPC_PIOnms;
//============================================
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_PIOnms Bits;
}LPC_REG_PIOnms;
//============================================
typedef volatile struct
{
  LPC_REG FUNC:     2;
  LPC_REG RESERVED:30;
}LPC_SCK_LOCs;
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_SCK_LOCs Bits;
}LPC_REG_SCK_LOCs;
//============================================
typedef volatile struct
{
  LPC_REG DSRLOC:     2;
  LPC_REG RESERVED:30;
}LPC_DSR_LOCs;
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_SCK_LOCs Bits;
}LPC_REG_DSR_LOCs;
//============================================
typedef volatile struct
{
  LPC_REG DCDLOC:     2;
  LPC_REG RESERVED:30;
}LPC_DCD_LOCs;
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_DCD_LOCs Bits;
}LPC_REG_DCD_LOCs;
//============================================
typedef volatile struct
{
  LPC_REG RILOC:     2;
  LPC_REG RESERVED:30;
}LPC_RI_LOCs;
typedef volatile union
{
  __IO LPC_REG  Regs;
  __IO LPC_SCK_LOCs Bits;
}LPC_REG_RI_LOCs;
//=============================================
typedef struct _LPCS_IOCON {//IO配置寄存器
  __IO LPC_REG_PIOnms PIO2_6;
       LPC_REG RESERVED0[1];
  __IO LPC_REG_PIOnms PIO2_0;
  __IO LPC_REG_PIOnms RESET_PIO0_0;
  __IO LPC_REG_PIOnms PIO0_1;
  __IO LPC_REG_PIOnms PIO1_8;
       LPC_REG RESERVED1[1];
  __IO LPC_REG_PIOnms PIO0_2;
  __IO LPC_REG_PIOnms PIO2_7;
  __IO LPC_REG_PIOnms PIO2_8;
  __IO LPC_REG_PIOnms PIO2_1;
  __IO LPC_REG_PIOnms PIO0_3;
  __IO LPC_REG_PIOnms PIO0_4;
  __IO LPC_REG_PIOnms PIO0_5;
  __IO LPC_REG_PIOnms PIO1_9;
  __IO LPC_REG_PIOnms PIO3_4;
  __IO LPC_REG_PIOnms PIO2_4;
  __IO LPC_REG_PIOnms PIO2_5;
  __IO LPC_REG_PIOnms PIO3_5;
  __IO LPC_REG_PIOnms PIO0_6;
  __IO LPC_REG_PIOnms PIO0_7;
  __IO LPC_REG_PIOnms PIO2_9;
  __IO LPC_REG_PIOnms PIO2_10;
  __IO LPC_REG_PIOnms PIO2_2;
  __IO LPC_REG_PIOnms PIO0_8;
  __IO LPC_REG_PIOnms PIO0_9;
  union {
   __IO LPC_REG_PIOnms JTAG_TCK_PIO0_10;
   __IO LPC_REG_PIOnms JTAG_TCK;
   __IO LPC_REG_PIOnms PIO0_10;
  };
  __IO LPC_REG_PIOnms PIO1_10;
  __IO LPC_REG_PIOnms PIO2_11;
  union {
   __IO LPC_REG_PIOnms JTAG_TDI_PIO0_11;
   __IO LPC_REG_PIOnms JTAG_TDI;
   __IO LPC_REG_PIOnms PIO0_11;
  };
  union {
   __IO LPC_REG_PIOnms JTAG_TMS_PIO1_0;
   __IO LPC_REG_PIOnms JTAG_TMS;
   __IO LPC_REG_PIOnms PIO1_0;
  };
  union {
   __IO LPC_REG_PIOnms JTAG_TDO_PIO1_1;
   __IO LPC_REG_PIOnms JTAG_TDO;
   __IO LPC_REG_PIOnms PIO1_1;
  };
  union {
   __IO LPC_REG_PIOnms JTAG_nTRST_PIO1_2;
   __IO LPC_REG_PIOnms JTAG_nTRST;
   __IO LPC_REG_PIOnms PIO1_2;
  };
  __IO LPC_REG_PIOnms PIO3_0;                 
  __IO LPC_REG_PIOnms PIO3_1;
  __IO LPC_REG_PIOnms PIO2_3;
  union {
   __IO LPC_REG_PIOnms ARM_SWDIO_PIO1_3;
   __IO LPC_REG_PIOnms ARM_SWDIO;
   __IO LPC_REG_PIOnms PIO1_3;
  };
  __IO LPC_REG_PIOnms PIO1_4;
  __IO LPC_REG_PIOnms PIO1_11;
  __IO LPC_REG_PIOnms PIO3_2;
  __IO LPC_REG_PIOnms PIO1_5;
  union {
   __IO LPC_REG_PIOnms PIO1_6;
   __IO LPC_REG_PIOnms RXD;
  };
  union {
   __IO LPC_REG_PIOnms PIO1_7;
   __IO LPC_REG_PIOnms TXD;
  };
  __IO LPC_REG_PIOnms PIO3_3;
  __IO LPC_REG_SCK_LOCs SCK_LOC;
  __IO LPC_REG_DSR_LOCs DSR_LOC;
  __IO LPC_REG_DCD_LOCs DCD_LOC;
  __IO LPC_REG_RI_LOCs RI_LOC;
}LPCS_IOCON, *LPCPS_IOCON;
#define LPC_BASE_IOCON  ((LPCPS_IOCON)  LPC_IOCON_BASE)//定义硬件结构指针(硬件地址)
#define IOCON (*LPC_BASE_IOCON)//定位全局结构变量IOCON
//============================================
typedef struct _LPCS_GPIO {//通用I/O口
       LPC_REG RESERVED0[4095];//保留
  __IO LPC_REG_PINs DATA;//端口n数据寄存器,其中PIOn_0到PIOn_11引脚可用(R/W)
       LPC_REG RESERVED1[4096];//保留
  __IO LPC_REG_PINs DIR;//端口n的数据方向寄存器(R/W)
  __IO LPC_REG_BITs IS;//端口n的中断触发寄存器(R/W)
  __IO LPC_REG_BITs IBE;//端口n的中断边沿寄存器(R/W)
  __IO LPC_REG_BITs IEV;//端口n的中断事件寄存器(R/W)
  __IO LPC_REG_BITs IE;//端口n的中断屏蔽寄存器(R/W)
  __IO LPC_REG_BITs RIS;//端口n的原始中断状态寄存器(R/W)
  __IO LPC_REG_BITs MIS;//端口n的屏蔽中断状态寄存器(R/W)
  __IO LPC_REG_BITs IC;//端口n的中断清除寄存器(R/W)
}LPCS_GPIO, *LPCPS_GPIO;
#define LPC_BASE_GPIO0  ((LPCPS_GPIO)  LPC_GPIO0_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_GPIO1  ((LPCPS_GPIO)  LPC_GPIO1_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_GPIO2  ((LPCPS_GPIO)  LPC_GPIO2_BASE)//定义硬件结构指针(硬件地址)
#define LPC_BASE_GPIO3  ((LPCPS_GPIO)  LPC_GPIO3_BASE)//定义硬件结构指针(硬件地址)
#define P0 (*LPC_BASE_GPIO0)//定位全局结构变量P0
#define P1 (*LPC_BASE_GPIO1)//定位全局结构变量P1
#define P2 (*LPC_BASE_GPIO2)//定位全局结构变量P2
#define P3 (*LPC_BASE_GPIO3)//定位全局结构变量P3
#define LPC_BASE_GPIOx(x) ((LPCPS_GPIO)(LPC_GPIO0_BASE + (x * (LPC_GPIO1_BASE - LPC_GPIO0_BASE))))//定义硬件结构指针(硬件地址)
#define PX(x) (*(LPC_BASE_GPIOx(x)))//定位全局结构变量Px
//============================================
typedef struct _LPCS_NVIC {
  __IO LPC_REG_BITs ISER;
       LPC_REG RESERVED0[31];
  __IO LPC_REG_BITs ICER;
       LPC_REG RSERVED1[31];
  __IO LPC_REG_BITs ISPR;
       LPC_REG RESERVED2[31];
  __IO LPC_REG_BITs ICPR;
       LPC_REG RESERVED3[31];
       LPC_REG RESERVED4[64];
  __IO LPC_REG_BITs IPR[8];
}LPCS_NVIC, *LPCPS_NVIC;
#define LPC_BASE_NVIC  ((LPCPS_NVIC)  0xE000E100)//定义硬件结构指针(硬件地址)
#define NVICs (*LPC_BASE_NVIC)//定位全局结构变量NVIC
//============================================
typedef enum
{
SYSCON_BootLoader  = 0,//
SYSCON_RAM         = 1,//
SYSCON_FLASH       = 2,//2~3
}IOCON_SYSCON_enum;
//============================================
typedef volatile struct
{
  LPC_REG MAP:        2;
  LPC_REG RESERVED:  30;
}LPC_SYSMEMREMAP_BITs;//I2C控制置位寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSMEMREMAP_BITs Bits;
}LPC_SYSMEMREMAP_REG_BITs;//I2C控制置位寄存器
typedef volatile struct
{
  LPC_REG SSP0_RST_N: 1;
  LPC_REG I2C0_RST_N: 1;
  LPC_REG SSP1_RST_N: 1;
  LPC_REG RESERVED:  29;
}LPC_PRESETCTRL_BITs;//外设复位控制
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_PRESETCTRL_BITs Bits;
}LPC_PRESETCTRL_REG_BITs;//外设复位控制
typedef volatile struct
{
  LPC_REG MSEL: 5;//反馈分频器值
  LPC_REG PSEL: 2;//后置分频器速率P
  LPC_REG DIRECT: 1;//直接CCO 时钟输出控制
  LPC_REG BYPASS: 1;//输入时钟旁路控制
  LPC_REG RESERVED:  23;
}LPC_SYSPLLCTRL_BITs;//系统PLL控制
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSPLLCTRL_BITs Bits;
}LPC_SYSPLLCTRL_REG_BITs;//系统PLL控制
typedef volatile struct
{
  LPC_REG LOCK: 1;   //PLL 锁定状态
  LPC_REG RESERVED:  31;
}LPC_SYSPLLSTAT_BITs;//系统PLL状态
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSPLLSTAT_BITs Bits;
}LPC_SYSPLLSTAT_REG_BITs;//系统PLL状态
typedef volatile struct
{
  LPC_REG BYPASS: 1;      //旁路系统振荡器
  LPC_REG FREQRANGE: 1;   //低功耗振荡器的频率范围
  LPC_REG RESERVED:  30;
}LPC_SYSOSCCTRL_BITs;//系统振荡器控制检测器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSOSCCTRL_BITs Bits;
}LPC_SYSOSCCTRL_REG_BITs;//系统振荡器控制检测器
typedef volatile struct
{
  LPC_REG DIVSEL: 5;    //选择将Fclkana 分频成wdt_osc_clk 的分频器
  LPC_REG FREQSEL: 4;   //选择看门狗振荡器模拟输出频率
  LPC_REG RESERVED:  23;
}LPC_WDTOSCCTRL_BITs;//看门狗振荡器控制
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_WDTOSCCTRL_BITs Bits;
}LPC_WDTOSCCTRL_REG_BITs;//看门狗振荡器控制
typedef volatile struct
{
  LPC_REG TRIM: 8;    //调整值
  LPC_REG RESERVED:  24;
}LPC_IRCCTRL_BITs;//内部共振晶体控制
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_IRCCTRL_BITs Bits;
}LPC_IRCCTRL_REG_BITs;//内部共振晶体控制
typedef volatile struct
{
  LPC_REG POR: 1;   //POR 复位状态
  LPC_REG EXTRST: 1;   //外部管脚复位状态
  LPC_REG WDT: 1;   //看门狗复位状态
  LPC_REG BOD: 1;   //掉电检测复位状态
  LPC_REG SYSRST: 1; //系统复位状态
  LPC_REG RESERVED:  27;
}LPC_SYSRESSTAT_BITs;//系统复位状态
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSRESSTAT_BITs Bits;
}LPC_SYSRESSTAT_REG_BITs;//系统复位状态
typedef volatile struct
{
  LPC_REG SYSCLK: 1;
  LPC_REG ROMCLK: 1;//使能ROM的时钟
  LPC_REG RAMCLK: 1;//使能RAM的时钟
  LPC_REG FLASH1CLK: 1;//使能Flash1的时钟
  LPC_REG FLASH2CLK: 1;//使能Flash2的时钟
  LPC_REG I2CCLK: 1;//使能I2C的时钟
  LPC_REG GPIOCLK: 1;//使能GPIO的时钟
  LPC_REG CT16B0CLK: 1;//使能16位计数器/定时器0的时钟
  LPC_REG CT16B1CLK: 1;//使能16位计数器/定时器1的时钟
  LPC_REG CT32B0CLK: 1;//使能32位计数器/定时器0的时钟
  LPC_REG CT32B1CLK: 1;//使能32位计数器/定时器1的时钟
  LPC_REG SSP0CLK: 1;//使能SSP0的时钟
  LPC_REG UARTCLK: 1;//使能UART的时钟
  LPC_REG ADCCLK: 1;//使能ADC 的时钟
  LPC_REG RESERVED0:  1;
  LPC_REG WDTCLK: 1;//使能WDT的时钟
  LPC_REG IOCONCLK: 1;//使能IO 配置块的时钟
  LPC_REG RESERVED1:  1;
  LPC_REG SSP1CLK: 1;//使能SSP1的时钟
  LPC_REG RESERVED2:  13;
}LPC_SYSAHBCLKCTRL_BITs;//系统AHB时钟控制
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSAHBCLKCTRL_BITs Bits;
}LPC_SYSAHBCLKCTRL_REG_BITs;//系统AHB时钟控制
//======================================================
typedef volatile struct
{
  LPC_REG SEL: 2;   //WDT时钟源
  LPC_REG RESERVED:  30;
}LPC_SYSCONCLKSEL_BITs;//WDT时钟源选择寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSCONCLKSEL_BITs Bits;
}LPC_SYSCONCLKSEL_REG_BITs;//WDT时钟源选择寄存器
typedef volatile struct
{
  LPC_REG ENA: 1;   //使能WDT 时钟源更新
  LPC_REG RESERVED:  31;
}LPC_SYSCONCLKUEN_BITs;//WDT时钟源更新使能
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSCONCLKUEN_BITs Bits;
}LPC_SYSCONCLKUEN_REG_BITs;//xxx时钟源更新使能
typedef volatile struct
{
  LPC_REG DIV: 8;   //xxx时钟分频器值
  LPC_REG RESERVED:  24;
}LPC_SYSCONCLKDIV_BITs;//xxx时钟分频寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSCONCLKDIV_BITs Bits;
}LPC_SYSCONCLKDIV_REG_BITs;//xxx时钟分频寄存器
//=============================================================
typedef volatile struct
{
  LPC_REG CAPPIO0_0: 1;//原始复位状态输入PIO0_0
  LPC_REG CAPPIO0_1: 1;//原始复位状态输入PIO0_1
  LPC_REG CAPPIO0_2: 1;//原始复位状态输入PIO0_2
  LPC_REG CAPPIO0_3: 1;//原始复位状态输入PIO0_3
  LPC_REG CAPPIO0_4: 1;//原始复位状态输入PIO0_4
  LPC_REG CAPPIO0_5: 1;//原始复位状态输入PIO0_5
  LPC_REG CAPPIO0_6: 1;//原始复位状态输入PIO0_6
  LPC_REG CAPPIO0_7: 1;//原始复位状态输入PIO0_7
  LPC_REG CAPPIO0_8: 1;//原始复位状态输入PIO0_8
  LPC_REG CAPPIO0_9: 1;//原始复位状态输入PIO0_9
  LPC_REG CAPPIO0_10: 1;//原始复位状态输入PIO0_10
  LPC_REG CAPPIO0_11: 1;//原始复位状态输入PIO0_11
  LPC_REG CAPPIO1_0: 1;//原始复位状态输入PIO1_0
  LPC_REG CAPPIO1_1: 1;//原始复位状态输入PIO1_1
  LPC_REG CAPPIO1_2: 1;//原始复位状态输入PIO1_2
  LPC_REG CAPPIO1_3: 1;//原始复位状态输入PIO1_3
  LPC_REG CAPPIO1_4: 1;//原始复位状态输入PIO1_4
  LPC_REG CAPPIO1_5: 1;//原始复位状态输入PIO1_5
  LPC_REG CAPPIO1_6: 1;//原始复位状态输入PIO1_6
  LPC_REG CAPPIO1_7: 1;//原始复位状态输入PIO1_7
  LPC_REG CAPPIO1_8: 1;//原始复位状态输入PIO1_8
  LPC_REG CAPPIO1_9: 1;//原始复位状态输入PIO1_9
  LPC_REG CAPPIO1_10: 1;//原始复位状态输入PIO1_10
  LPC_REG CAPPIO1_11: 1;//原始复位状态输入PIO1_11
  LPC_REG CAPPIO2_0: 1;//原始复位状态输入PIO2_0
  LPC_REG CAPPIO2_1: 1;//原始复位状态输入PIO2_1
  LPC_REG CAPPIO2_2: 1;//原始复位状态输入PIO2_2
  LPC_REG CAPPIO2_3: 1;//原始复位状态输入PIO2_3
  LPC_REG CAPPIO2_4: 1;//原始复位状态输入PIO2_4
  LPC_REG CAPPIO2_5: 1;//原始复位状态输入PIO2_5
  LPC_REG CAPPIO2_6: 1;//原始复位状态输入PIO2_6
  LPC_REG CAPPIO2_7: 1;//原始复位状态输入PIO2_7
}LPC_PIOPORCAP0_BITs;//POR捕获PIO状态寄存器0
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_PIOPORCAP0_BITs Bits;
}LPC_PIOPORCAP0_REG_BITs;//POR捕获PIO状态寄存器0
typedef volatile struct
{
  LPC_REG CAPPIO2_8: 1;//原始复位状态输入PIO2_8
  LPC_REG CAPPIO2_9: 1;//原始复位状态输入PIO2_9
  LPC_REG CAPPIO2_10: 1;//原始复位状态输入PIO2_10
  LPC_REG CAPPIO2_11: 1;//原始复位状态输入PIO2_11
  LPC_REG CAPPIO3_0: 1;//原始复位状态输入PIO3_0
  LPC_REG CAPPIO3_1: 1;//原始复位状态输入PIO3_1
  LPC_REG CAPPIO3_2: 1;//原始复位状态输入PIO3_2
  LPC_REG CAPPIO3_3: 1;//原始复位状态输入PIO3_3
  LPC_REG CAPPIO3_4: 1;//原始复位状态输入PIO3_4
  LPC_REG CAPPIO3_5: 1;//原始复位状态输入PIO3_5
  LPC_REG RESERVED:  22;
}LPC_PIOPORCAP1_BITs;//POR捕获PIO状态寄存器1
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_PIOPORCAP1_BITs Bits;
}LPC_PIOPORCAP1_REG_BITs;//POR捕获PIO状态寄存器0

typedef volatile struct
{
  LPC_REG BODRSTLEV: 2;   //BOD复位电平
  LPC_REG BODINTVAL: 2;   //BOD中断电平
  LPC_REG BODRSTENA: 1;   //BOD复位使能
  LPC_REG RESERVED:  27;
}LPC_BODCTRL_BITs;//BOD控制寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_BODCTRL_BITs Bits;
}LPC_BODCTRL_REG_BITs;//BOD控制寄存器
typedef volatile struct
{
  LPC_REG CAL: 26;   //系统节拍校准值
  LPC_REG RESERVED:  6;
}LPC_SYSTCKCAL_BITs;//系统节拍定时器校准寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_SYSTCKCAL_BITs Bits;
}LPC_SYSTCKCAL_REG_BITs;//系统节拍定时器校准寄存器
//=====================================================================
typedef volatile struct
{
  LPC_REG APRPIO0_0: 1; //起始逻辑输入PIO0_0边沿选择
  LPC_REG APRPIO0_1: 1; //起始逻辑输入PIO0_1边沿选择
  LPC_REG APRPIO0_2: 1; //起始逻辑输入PIO0_2边沿选择
  LPC_REG APRPIO0_3: 1; //起始逻辑输入PIO0_3边沿选择
  LPC_REG APRPIO0_4: 1; //起始逻辑输入PIO0_4边沿选择
  LPC_REG APRPIO0_5: 1; //起始逻辑输入PIO0_5边沿选择
  LPC_REG APRPIO0_6: 1; //起始逻辑输入PIO0_6边沿选择
  LPC_REG APRPIO0_7: 1; //起始逻辑输入PIO0_7边沿选择
  LPC_REG APRPIO0_8: 1; //起始逻辑输入PIO0_8边沿选择
  LPC_REG APRPIO0_9: 1; //起始逻辑输入PIO0_9边沿选择
  LPC_REG APRPIO0_10: 1; //起始逻辑输入PIO0_10边沿选择
  LPC_REG APRPIO0_11: 1; //起始逻辑输入PIO0_11边沿选择
  LPC_REG APRPIO1_0: 1; //起始逻辑输入PIO1_0边沿选择
  LPC_REG RESERVED:  19;
}LPC_STARTAPRP0_BITs;//逻辑边沿寄存器0
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STARTAPRP0_BITs Bits;
}LPC_STARTAPRP0_REG_BITs;//逻辑边沿寄存器0
//================================================================
typedef volatile struct
{
  LPC_REG ERPIO0_0: 1; //起始逻辑输入PIO0_0起始信号
  LPC_REG ERPIO0_1: 1; //起始逻辑输入PIO0_1起始信号
  LPC_REG ERPIO0_2: 1; //起始逻辑输入PIO0_2起始信号
  LPC_REG ERPIO0_3: 1; //起始逻辑输入PIO0_3起始信号
  LPC_REG ERPIO0_4: 1; //起始逻辑输入PIO0_4起始信号
  LPC_REG ERPIO0_5: 1; //起始逻辑输入PIO0_5起始信号
  LPC_REG ERPIO0_6: 1; //起始逻辑输入PIO0_6起始信号
  LPC_REG ERPIO0_7: 1; //起始逻辑输入PIO0_7起始信号
  LPC_REG ERPIO0_8: 1; //起始逻辑输入PIO0_8起始信号
  LPC_REG ERPIO0_9: 1; //起始逻辑输入PIO0_9起始信号
  LPC_REG ERPIO0_10: 1; //起始逻辑输入PIO0_10起始信号
  LPC_REG ERPIO0_11: 1; //起始逻辑输入PIO0_11起始信号
  LPC_REG ERPIO1_0: 1; //起始逻辑输入PIO1_0起始信号
  LPC_REG RESERVED:  19;
}LPC_STARTERP0_BITs;//起始逻辑复位寄存器0
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STARTERP0_BITs Bits;
}LPC_STARTERP0_REG_BITs;//起始逻辑复位寄存器0
//================================================================
typedef volatile struct
{
  LPC_REG RSRPIO0_0: 1; //起始逻辑输入PIO0_0起始信号复位
  LPC_REG RSRPIO0_1: 1; //起始逻辑输入PIO0_1起始信号复位
  LPC_REG RSRPIO0_2: 1; //起始逻辑输入PIO0_2起始信号复位
  LPC_REG RSRPIO0_3: 1; //起始逻辑输入PIO0_3起始信号复位
  LPC_REG RSRPIO0_4: 1; //起始逻辑输入PIO0_4起始信号复位
  LPC_REG RSRPIO0_5: 1; //起始逻辑输入PIO0_5起始信号复位
  LPC_REG RSRPIO0_6: 1; //起始逻辑输入PIO0_6起始信号复位
  LPC_REG RSRPIO0_7: 1; //起始逻辑输入PIO0_7起始信号复位
  LPC_REG RSRPIO0_8: 1; //起始逻辑输入PIO0_8起始信号复位
  LPC_REG RSRPIO0_9: 1; //起始逻辑输入PIO0_9起始信号复位
  LPC_REG RSRPIO0_10: 1; //起始逻辑输入PIO0_10起始信号复位
  LPC_REG RSRPIO0_11: 1; //起始逻辑输入PIO0_11起始信号复位
  LPC_REG RSRPIO1_0: 1; //起始逻辑输入PIO1_0起始信号复位
  LPC_REG RESERVED:  19;
}LPC_STARTRSRP0CLR_BITs;//起始逻辑复位寄存器0
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STARTRSRP0CLR_BITs Bits;
}LPC_STARTRSRP0CLR_REG_BITs;//起始逻辑复位寄存器0
//================================================================
typedef volatile struct
{
  LPC_REG SRPIO0_0: 1; //起始逻辑输入PIO0_0起始信号状态
  LPC_REG SRPIO0_1: 1; //起始逻辑输入PIO0_1起始信号状态
  LPC_REG SRPIO0_2: 1; //起始逻辑输入PIO0_2起始信号状态
  LPC_REG SRPIO0_3: 1; //起始逻辑输入PIO0_3起始信号状态
  LPC_REG SRPIO0_4: 1; //起始逻辑输入PIO0_4起始信号状态
  LPC_REG SRPIO0_5: 1; //起始逻辑输入PIO0_5起始信号状态
  LPC_REG SRPIO0_6: 1; //起始逻辑输入PIO0_6起始信号状态
  LPC_REG SRPIO0_7: 1; //起始逻辑输入PIO0_7起始信号状态
  LPC_REG SRPIO0_8: 1; //起始逻辑输入PIO0_8起始信号状态
  LPC_REG SRPIO0_9: 1; //起始逻辑输入PIO0_9起始信号状态
  LPC_REG SRPIO0_10: 1; //起始逻辑输入PIO0_10起始信号状态
  LPC_REG SRPIO0_11: 1; //起始逻辑输入PIO0_11起始信号状态
  LPC_REG SRPIO1_0: 1; //起始逻辑输入PIO1_0起始信号状态
  LPC_REG RESERVED:  19;
}LPC_STARTSRP0_BITs;//起始逻辑状态寄存器0
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_STARTSRP0_BITs Bits;
}LPC_STARTSRP0_REG_BITs;//起始逻辑状态寄存器0
//================================================================
typedef volatile struct
{
  LPC_REG IRCOUT_PD: 1; //深度睡眠模式下的IRC 振荡器输出掉电控制
  LPC_REG IRC_PD: 1; //深度睡眠模式下的IRC 振荡器掉电控制
  LPC_REG FLASH_PD: 1; //深度睡眠模式下的Flash 掉电控制
  LPC_REG BOD_PD: 1; //深度睡眠模式下的BOD 掉电控制
  LPC_REG ADC_PD: 1; //深度睡眠模式下的ADC 掉电控制
  LPC_REG SYSOSC_PD: 1; //深度睡眠模式下的系统振荡器掉电控制
  LPC_REG WDT_PD: 1; //深度睡眠模式下的WDT 掉电控制
  LPC_REG SYSPLL_PD: 1; //深度睡眠模式下的系统PLL 掉电控制
  LPC_REG RESERVED0:  1;
  LPC_REG SLEEP0:     1;//在深度睡眠模式下该位必须为1
  LPC_REG RESERVED1:  1;
  LPC_REG SLEEP1:     1;//在深度睡眠模式下该位必须为1
  LPC_REG RESERVED2:  20;
}LPC_PDSLEEPCFG_BITs;//深度睡眠模式配置寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_PDSLEEPCFG_BITs Bits;
}LPC_PDSLEEPCFG_REG_BITs;//深度睡眠模式配置寄存器
typedef struct _LPCS_SYSCON {
  __IO LPC_SYSMEMREMAP_REG_BITs SYSMEMREMAP;//系统存储器重映射
  __IO LPC_PRESETCTRL_REG_BITs PRESETCTRL;//外设复位控制
  __IO LPC_SYSPLLCTRL_REG_BITs SYSPLLCTRL;//系统PLL控制
  __IO LPC_SYSPLLSTAT_REG_BITs SYSPLLSTAT;//系统PLL状态
       LPC_REG RESERVED0[4];
  __IO LPC_SYSOSCCTRL_REG_BITs SYSOSCCTRL;//系统振荡器控制检测器
  __IO LPC_WDTOSCCTRL_REG_BITs WDTOSCCTRL;//看门狗振荡器控制
  __IO LPC_IRCCTRL_REG_BITs IRCCTRL;//内部共振晶体控制
       LPC_REG RESERVED1[1];
  __IO LPC_SYSRESSTAT_REG_BITs SYSRESSTAT;//系统复位状态
       LPC_REG RESERVED2[3];
  __IO LPC_SYSCONCLKSEL_REG_BITs SYSPLLCLKSEL;//系统PLL时钟源选择
  __IO LPC_SYSCONCLKUEN_REG_BITs SYSPLLCLKUEN;//系统PLL 时钟源更新使能
       LPC_REG RESERVED3[10];
  __IO LPC_SYSCONCLKSEL_REG_BITs MAINCLKSEL;//主时钟源选择
  __IO LPC_SYSCONCLKUEN_REG_BITs MAINCLKUEN;//主时钟源更新使能
  __IO LPC_SYSCONCLKDIV_REG_BITs SYSAHBCLKDIV;//系统AHB 时钟分频
       LPC_REG RESERVED4[1];
  __IO LPC_SYSAHBCLKCTRL_REG_BITs SYSAHBCLKCTRL;//系统AHB时钟控制
       LPC_REG RESERVED5[4];
  __IO LPC_SYSCONCLKDIV_REG_BITs SSP0CLKDIV;//SSP0 时钟分频寄存器
  __IO LPC_SYSCONCLKDIV_REG_BITs UARTCLKDIV;//UART时钟分频寄存器
  __IO LPC_SYSCONCLKDIV_REG_BITs SSP1CLKDIV;//SSP1 时钟分频寄存器
       LPC_REG RESERVED6[4];
  __IO LPC_SYSCONCLKDIV_REG_BITs SYSTICKCLKDIV;//SYSTICK时钟分频寄存器
       LPC_REG RESERVED7[7];
  __IO LPC_SYSCONCLKSEL_REG_BITs WDTCLKSEL;//WDT时钟源选择寄存器
  __IO LPC_SYSCONCLKUEN_REG_BITs WDTCLKUEN;//WDT时钟源更新使能寄存器
  __IO LPC_SYSCONCLKDIV_REG_BITs WDTCLKDIV;//WDT时钟分频寄存器
       LPC_REG RESERVED8[1];              
  __IO LPC_SYSCONCLKSEL_REG_BITs CLKOUTCLKSEL;//CLKOUT时钟源选择寄存器
  __IO LPC_SYSCONCLKUEN_REG_BITs CLKOUTUEN;//CLKOUT时钟源更新使能寄存器
  __IO LPC_SYSCONCLKDIV_REG_BITs CLKOUTDIV;//CLKOUT时钟分频寄存器
       LPC_REG RESERVED9[5];
  
  __IO LPC_PIOPORCAP0_REG_BITs PIOPORCAP0;//POR捕获PIO状态寄存器0
  __IO LPC_PIOPORCAP1_REG_BITs PIOPORCAP1;//POR捕获PIO状态寄存器1
       LPC_REG RESERVED10[18];
  __IO LPC_BODCTRL_REG_BITs BODCTRL;//BOD控制寄存器
       LPC_REG RESERVED11[1];
  __IO LPC_SYSTCKCAL_REG_BITs SYSTCKCAL;//系统节拍定时器校准寄存器
       LPC_REG RESERVED12[41];         
  __IO LPC_STARTAPRP0_REG_BITs STARTAPRP0;//起始逻辑边沿控制寄存器0
  __IO LPC_STARTERP0_REG_BITs STARTERP0;//起始逻辑复位寄存器0
  __IO LPC_STARTRSRP0CLR_REG_BITs STARTRSRP0CLR;//始逻辑复位寄存器0
  __IO LPC_STARTSRP0_REG_BITs STARTSRP0;//起始逻辑状态寄存器0
       LPC_REG RESERVED14[8];
  __IO LPC_PDSLEEPCFG_REG_BITs PDSLEEPCFG;//深度睡眠模式配置寄存器
  __IO LPC_PDSLEEPCFG_REG_BITs PDAWAKECFG;//唤醒配置寄存器
  __IO LPC_PDSLEEPCFG_REG_BITs PDRUNCFG;//掉电配置寄存器
       LPC_REG RESERVED15[110];
  __I  LPC_REG_BITs DEVICE_ID;//器件ID寄存器
}LPCS_SYSCON, *LPCPS_SYSCON;
#define LPC_BASE_SYSCON  ((LPCPS_SYSCON)  LPC_SYSCON_BASE)//定义硬件结构指针(硬件地址)
#define SYSCON (*LPC_BASE_SYSCON)//定位全局结构变量SYSCON
//================================================================
typedef volatile struct
{
  LPC_REG RESERVED0:  1;
  LPC_REG DPDEN: 1; //深度掉电模式的使能位
  LPC_REG RESERVED1:  9;
  LPC_REG DPDFLAG:  1;//深度掉电标记
  LPC_REG RESERVED2:  20;
}LPC_PCON_BITs;//电源控制寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_PCON_BITs Bits;
}LPC_PCON_REG_BITs;//电源控制寄存器
//============================================
typedef struct _LPCS_PMU {
  __IO LPC_PCON_REG_BITs PCON;//电源控制寄存器
  __IO LPC_REG_BITs GPREG0;//通用寄存器0
  __IO LPC_REG_BITs GPREG1;//通用寄存器1
  __IO LPC_REG_BITs GPREG2;//通用寄存器2
  __IO LPC_REG_BITs GPREG3;//通用寄存器3
  __IO LPC_REG_BITs GPREG4;//通用寄存器4
}LPCS_PMU, *LPCPS_PMU;
#define LPC_BASE_PMU  ((LPCPS_PMU)  LPC_PMU_BASE)//定义硬件结构指针(硬件地址)
#define PMU (*LPC_BASE_PMU)//定位全局结构变量PMU 电源管理单元

//================================================================
typedef volatile struct
{
  LPC_REG WDEN:  1;//WDEN看门狗使能位(只能置位)。为1时,看门狗运行
  LPC_REG WDRESET: 1; //WDRESET看门狗复位使能位(只能置位)。为1时,看门狗超时会引起芯片复位
  LPC_REG WDTOF:  1;//WDTOF看门狗超时标志。只在看门狗定时器超时时置位,由软件清零
  LPC_REG WDINT:  1;//WDINT看门狗中断标志(只读,不能被软件清零)
  LPC_REG RESERVED:  28;
}LPC_WDMOD_BITs;//看门狗模式寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_WDMOD_BITs Bits;
}LPC_WDMOD_REG_BITs;//看门狗模式寄存器
//============================================
typedef struct _LPCS_WDT {
  __IO LPC_WDMOD_REG_BITs MOD;//看门狗模式寄存器
  __IO LPC_REG_BITs TC;//看门狗定时器常数寄存器
  __O  LPC_REG_BITs FEED;//看门狗喂狗序列寄存器
  __I  LPC_REG_BITs TV;//看门狗定时器值寄存器
}LPCS_WDT, *LPCPS_WDT;
#define LPC_BASE_WDT  ((LPCPS_WDT)  LPC_WDT_BASE)//定义硬件结构指针(硬件地址)
#define WDT (*LPC_BASE_WDT)//定位全局结构变量PMU 电源管理单元

//================================================================
typedef volatile struct
{
  LPC_REG SEL:  8;//从AD7:0中选择采样和转换的输入脚
  LPC_REG CLKDIV: 8; //将APB时钟(PCLK)进行(CLKDIV值+1)分频得到转换时钟
  LPC_REG BURST:  1;//0-软件控制模式 1-硬件扫描模式
  LPC_REG CLKS:  3;//转换结果的有效位数
  LPC_REG RESERVED0:  4;
  LPC_REG START:  3;//启动位
  LPC_REG EDGE:   1;//启动转换
  LPC_REG RESERVED1:  4;
}LPC_ADCCR_BITs;//A/D控制寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_ADCCR_BITs Bits;
}LPC_ADCCR_REG_BITs;//A/D控制寄存器
//================================================================
typedef volatile struct
{
  LPC_REG RESERVED0:  6;
  LPC_REG RESULT: 10;//ADC转换结果
  LPC_REG RESERVED1:  8;
  LPC_REG CHN:  3;//转换通道
  LPC_REG RESERVED2:  3;
  LPC_REG OVERRUN:  1;
  LPC_REG DONE:   1;//A/D转换结束时该位置1,该位在读取该寄存器和写ADCR时清零。
                    //如果在转换过程中写ADCR,则该位置位并启动新的转换
}LPC_ADCGDR_BITs;//A/D全局数据寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_ADCGDR_BITs Bits;
}LPC_ADCGDR_REG_BITs;//A/D全局数据寄存器
//================================================================
typedef volatile struct
{
  LPC_REG Done0:  1;
  LPC_REG Done1:  1;
  LPC_REG Done2:  1;
  LPC_REG Done3:  1;
  LPC_REG Done4:  1;
  LPC_REG Done5:  1;
  LPC_REG Done6:  1;
  LPC_REG Done7:  1;
  LPC_REG Overrun0: 1;
  LPC_REG Overrun1: 1;
  LPC_REG Overrun2: 1;
  LPC_REG Overrun3: 1;
  LPC_REG Overrun4: 1;
  LPC_REG Overrun5: 1;
  LPC_REG Overrun6: 1;
  LPC_REG Overrun7: 1;
  LPC_REG ADINT:    1;
  LPC_REG RESERVED:  7;
}LPC_ADCSTAT_BITs;//A/D状态寄存器
typedef volatile struct
{
  LPC_REG DoneX:  8;
  LPC_REG OverrunX: 8;
  LPC_REG ADINT:    1;
  LPC_REG RESERVED:  7;
}LPC_ADCSTAT_UNITs;//A/D状态寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_ADCSTAT_BITs Bits;
  __IO LPC_ADCSTAT_UNITs Units;
}LPC_ADCSTAT_REG_BITs;//A/D状态寄存器
//================================================================
typedef volatile struct
{
  LPC_REG ADINTEN0:  1;
  LPC_REG ADINTEN1:  1;
  LPC_REG ADINTEN2:  1;
  LPC_REG ADINTEN3:  1;
  LPC_REG ADINTEN4:  1;
  LPC_REG ADINTEN5:  1;
  LPC_REG ADINTEN6:  1;
  LPC_REG ADINTEN:   1;
  LPC_REG RESERVED:  23;
}LPC_ADCINTEN_BITs;//A/D中断使能寄存器
typedef volatile struct
{
  LPC_REG ADINTENX:  8;
  LPC_REG ADINTEN:   1;
  LPC_REG RESERVED:  23;
}LPC_ADCINTEN_UNITs;//A/D中断使能寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_ADCINTEN_BITs Bits;
  __IO LPC_ADCINTEN_UNITs Units;
}LPC_ADCINTEN_REG_BITs;//A/D中断使能寄存器
//================================================================
typedef volatile struct
{
  LPC_REG RESERVED0:  6;
  LPC_REG RESULT: 10;//ADC转换结果
  LPC_REG RESERVED1:  8;
  LPC_REG RESERVED2:  3;
  LPC_REG RESERVED3:  3;
  LPC_REG OVERRUN:  1;
  LPC_REG DONE:   1;//A/D转换结束时该位置1,该位在读取该寄存器和写ADCR时清零。
                    //如果在转换过程中写ADCR,则该位置位并启动新的转换
}LPC_ADCDR_BITs;//A/D通道0~7数据寄存器
typedef volatile union
{
  __IO LPC_REG Regs;
  __IO LPC_ADCGDR_BITs Bits;
}LPC_ADCDR_REG_BITs;//A/D通道0~7数据寄存器
//============================================
typedef struct _LPCS_ADC {
  __IO LPC_ADCCR_REG_BITs CR;//A/D控制寄存器
  __IO LPC_ADCGDR_REG_BITs GDR;//A/D全局数据寄存器
       LPC_REG RESERVED0;
  __IO LPC_ADCINTEN_REG_BITs INTEN;//A/D中断使能寄存器
  __IO LPC_ADCDR_REG_BITs DR[8];//A/D通道0~7数据寄存器
  __I  LPC_ADCSTAT_REG_BITs STAT;//A/D状态寄存器
}LPCS_ADC, *LPCPS_ADC;
#define LPC_BASE_ADC  ((LPCPS_ADC)  LPC_ADC_BASE)//定义硬件结构指针(硬件地址)
#define ADC (*LPC_BASE_ADC)//定位全局结构变量PMU

#ifdef __cplusplus
}
#endif
#endif  /* __LPC11xxcfg_H__ */

相关帖子

沙发
hotpower|  楼主 | 2010-8-18 01:26 | 只看该作者
//KEY1宏定义三板斧
#define PioKey1   PIO2_6 //P2.6
#define PortKey1  P2     //P2
#define PinKey1   Pin6   //Px.6
//KEY2宏定义三板斧
#define PioKey2   PIO2_0 //P2.0
#define PortKey2  P2     //P2
#define PinKey2   Pin0   //Px.0

//LED1宏定义三板斧
#define PioLed1   PIO1_8 //P1.8
#define PortLed1  P1     //P1
#define PinLed1   Pin8   //Px.8
//LED2宏定义三板斧
#define PioLed2   PIO0_2 //P0.2
#define PortLed2  P0     //P0
#define PinLed2   Pin2   //Px.2
//LED3宏定义三板斧
#define PioLed3   PIO2_7 //P2.7
#define PortLed3  P2     //P2
#define PinLed3   Pin7   //Px.7
//LED4宏定义三板斧
#define PioLed4   PIO2_8 //P2.8
#define PortLed4  P2     //P2
#define PinLed4   Pin8   //Px.8
//LED5宏定义三板斧
#define PioLed5   PIO2_1 //P2.1
#define PortLed5  P2     //P2
#define PinLed5   Pin1   //Px.1
//LED6宏定义三板斧
#define PioLed6   PIO1_9 //P1.9
#define PortLed6  P1     //P1
#define PinLed6   Pin9   //Px.9
//LED7宏定义三板斧
#define PioLed7   PIO3_4 //P3.4
#define PortLed7  P3     //P3
#define PinLed7   Pin4   //Px.4
//LED8宏定义三板斧
#define PioLed8   PIO3_5 //P3.5
#define PortLed8  P3     //P3
#define PinLed8   Pin5   //Px.5
//BEEP宏定义三板斧
#define PioBeep   PIO0_8 //P0.8
#define PortBeep  P0     //P0
#define PinBeep   Pin8   //Px.8

使用特权

评论回复
板凳
hotpower|  楼主 | 2010-8-18 01:26 | 只看该作者
#include "main.h"
volatile unsigned int SystemRamTest = 0x55aa55aa;//RAM不初始化

/*-------------------------------------------
注意:
1.全局类对象实例的构造函数运行级别高于main()
2.类的构造函数的运行次序与申请次序一样
--------------------------------------------*/
SystemObj System;//自动调用构造函数
SysTickObj SystemTick;//自动调用构造函数
TimerObj  Timer;//自动调用构造函数
UartObj   Uart;//自动调用构造函数
TargetObj Target;//自动调用构造函数
/*-------------------------------------------
main()将在以上构造函数后才能运行
--------------------------------------------*/
int main()
{
/*
//位域写法
        IOCON.TXD.Bits.FUNC = IOCON_TXD;
        IOCON.TXD.Bits.MODE = IOCON_UP;
//寄存器写法
        IOCON.TXD.Regs = (IOCON_TXD << IOCON_FUNC)
                       | (IOCON_UP << IOCON_MODE);
//位域写法
        IOCON.RXD.Bits.FUNC = IOCON_RXD;
        IOCON.RXD.Bits.MODE = IOCON_UP;
//寄存器写法
        IOCON.RXD.Regs = (IOCON_RXD << IOCON_FUNC)
                       | (IOCON_UP << IOCON_MODE);
//位域写法
        IOCON.PIO0_4.Bits.FUNC    = IOCON_SCL;//选择PIO0.4为I2C_SCL
        IOCON.PIO0_4.Bits.I2CMODE = IOCON_SCL_I2CMODE;//选择PIO0.4为I2C_SCL
        IOCON.PIO0_5.Bits.FUNC    = IOCON_SDA;//选择PIO0.5为I2C_SCL
        IOCON.PIO0_5.Bits.I2CMODE = IOCON_SDA_I2CMODE;//选择PIO0.5为I2C_SDA
//寄存器写法
        IOCON.PIO0_4.Regs = (IOCON_SCL << IOCON_FUNC)
                          | (IOCON_SCL_I2CMODE << IOCON_I2CMODE);
        IOCON.PIO0_5.Regs = (IOCON_SDA << IOCON_FUNC)
                          | (IOCON_SDA_I2CMODE << IOCON_I2CMODE);
//位域写法
        IOCON.PIO2_6.Bits.FUNC = IOCON_PIO2_6;//选择PIO2.6为IO
        IOCON.PIO2_6.Bits.FUNC = IOCON_PIO;//选择PIO2.6为IO
        IOCON.PIO2_6.Bits.MODE = IOCON_UP;//选择PIO2.6上拉电阻
        IOCON.PIO2_0.Bits.FUNC = IOCON_PIO2_0_SSEL1;//选择PIO2.0为SSEL1
        IOCON.PIO2_0.Bits.FUNC = IOCON_SSEL1;//选择PIO2.0为SSEL1
        P0.DIR.Bits.Pin2 = 1;
        PX(0).DIR.Bits.Pin2 = 1;
        PX(1).DIR.Bits.Pin8 = 1;
//
*/
        SYSCON.SYSAHBCLKCTRL.Bits.GPIOCLK = 1;//使能GPIO的时钟
//BeepInit
        IOCON.PioBeep.Bits.FUNC = IOCON_PIO;//选择PIO0.8为BEEP
        IOCON.PioBeep.Bits.MODE = IOCON_DOWN;//下拉电阻
        PortBeep.DIR.Bits.PinBeep = 1;//设置输出方式
        PortBeep.DATA.Bits.PinBeep = 0;//蜂鸣器不响
//Key1Init
        IOCON.PioKey1.Bits.FUNC = IOCON_PIO;//选择P2.6为KEY1
        IOCON.PioKey1.Bits.MODE = IOCON_UP;//上拉电阻
        PortKey1.DIR.Bits.PinKey1 = 0;//设置输输入方式
        PortKey1.DATA.Bits.PinKey1 = 1;//释放键盘
//Key2Init
        IOCON.PioKey2.Bits.FUNC = IOCON_PIO;//选择P2.0为KEY2
        IOCON.PioKey2.Bits.MODE = IOCON_UP;//上拉电阻
        PortKey2.DIR.Bits.PinKey2 = 0;//设置输输入方式
        PortKey2.DATA.Bits.PinKey2 = 1;//释放键盘
//Led1Init
        IOCON.PioLed1.Bits.FUNC = IOCON_PIO;//选择PIO1.8为LED1
        IOCON.PioLed1.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed1.DIR.Bits.PinLed1 = 1;//设置输出方式
        PortLed1.DATA.Bits.PinLed1 = 1;//LED1灭
//Led2Init
        IOCON.PioLed2.Bits.FUNC = IOCON_PIO;//选择PIO0.2为LED2
        IOCON.PioLed2.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed2.DIR.Bits.PinLed2 = 1;//设置输出方式
        PortLed2.DATA.Bits.PinLed2 = 0;//LED2亮
//Led3Init
        IOCON.PioLed3.Bits.FUNC = IOCON_PIO;//选择PIO2.7为LED3
        IOCON.PioLed3.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed3.DIR.Bits.PinLed3 = 1;//设置输出方式
        PortLed3.DATA.Bits.PinLed3 = 1;//LED3灭
//Led4Init
        IOCON.PioLed4.Bits.FUNC = IOCON_PIO;//选择PIO2.8为LED4
        IOCON.PioLed4.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed4.DIR.Bits.PinLed4 = 1;//设置输出方式
        PortLed4.DATA.Bits.PinLed4 = 0;//LED4亮
//Led5Init
        IOCON.PioLed5.Bits.FUNC = IOCON_PIO;//选择P2.1为LED5
        IOCON.PioLed5.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed5.DIR.Bits.PinLed5 = 1;//设置输出方式
        PortLed5.DATA.Bits.PinLed5 = 1;//LED5灭
//Led6Init
        IOCON.PioLed6.Bits.FUNC = IOCON_PIO;//选择P1.9为LED6
        IOCON.PioLed6.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed6.DIR.Bits.PinLed6 = 1;//设置输出方式
        PortLed6.DATA.Bits.PinLed6 = 0;//LED6亮
//Led7Init
        IOCON.PioLed7.Bits.FUNC = IOCON_PIO;//选择P3.4为LED7
        IOCON.PioLed7.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed7.DIR.Bits.PinLed7 = 1;//设置输出方式
        PortLed7.DATA.Bits.PinLed7 = 1;//LED7灭
//Led8Init
        IOCON.PioLed8.Bits.FUNC = IOCON_PIO;//选择P3.5为LED8
        IOCON.PioLed8.Bits.MODE = IOCON_UP;//上拉电阻
        PortLed8.DIR.Bits.PinLed8 = 1;//设置输出方式
        PortLed8.DATA.Bits.PinLed8 = 0;//LED8亮

        while(1) {//PX(i)可变真美妙
//                PX(0).DATA.Bits.Pin2 ^= 1;
//                PX(1).DATA.Bits.Pin8 ^= 1;
                PortLed1.DATA.Bits.PinLed1 ^= 1;
                PortLed2.DATA.Bits.PinLed2 ^= 1;
                PortLed3.DATA.Bits.PinLed3 ^= 1;
                PortLed4.DATA.Bits.PinLed4 ^= 1;
                PortLed5.DATA.Bits.PinLed5 ^= 1;
                PortLed6.DATA.Bits.PinLed6 ^= 1;
                PortLed7.DATA.Bits.PinLed7 ^= 1;
                PortLed8.DATA.Bits.PinLed8 ^= 1;
                __NOP();       
                PortBeep.DATA.Bits.PinBeep ^= 1;//蜂鸣器响
                __NOP();       
                __NOP();       
                __NOP();       
                __NOP();       
                __NOP();
                for (int i = 0; i < 888888; i ++)//延时
                {
                        __NOP();
                }       
                if (PortBeep.DATA.Bits.PinBeep)//蜂鸣器响
                {
                        while(!PortKey1.DATA.Bits.PinKey1);//等待Key1释放
                }
                else//蜂鸣器不响
                {
                        while(!PortKey2.DATA.Bits.PinKey2);//等待Key2释放
                }
        }
}

使用特权

评论回复
地板
hotpower|  楼主 | 2010-8-18 01:28 | 只看该作者
真累呀~~~

使用特权

评论回复
5
chenxu_1| | 2010-8-18 10:58 | 只看该作者
:victory:

使用特权

评论回复
6
chenxu_1| | 2010-8-18 10:59 | 只看该作者
hot大叔有没有写自己的启动代码的打算?

使用特权

评论回复
7
hotpower|  楼主 | 2010-8-18 12:36 | 只看该作者
有此想法,看见汇编眼晕。

使用特权

评论回复
8
hotpower|  楼主 | 2010-8-18 12:36 | 只看该作者
有此想法,看见汇编眼晕。

使用特权

评论回复
9
chenxu_1| | 2010-8-18 16:35 | 只看该作者
那大叔的下一步功课是?

使用特权

评论回复
10
hotpower|  楼主 | 2010-8-18 20:04 | 只看该作者
好好学习,天天向上。

使用特权

评论回复
11
mcu123AD| | 2010-8-23 13:49 | 只看该作者
学习,还有中文注释。不错。

使用特权

评论回复
12
6019赵文| | 2010-10-9 19:34 | 只看该作者
楼主真乃高人也,谢谢了啊

使用特权

评论回复
13
amini| | 2010-11-10 20:46 | 只看该作者
:dizzy:

使用特权

评论回复
14
sh19888| | 2010-11-10 22:18 | 只看该作者
谢谢了

使用特权

评论回复
15
Jerson1| | 2010-11-18 22:01 | 只看该作者
楼主这玩意儿不要往这里发。谁看啊

使用特权

评论回复
16
hotpower|  楼主 | 2011-1-25 15:56 | 只看该作者
顶,准备开战

使用特权

评论回复
17
ytfdhb| | 2011-8-18 11:06 | 只看该作者
强烈支持^_^

使用特权

评论回复
18
kaifengzhongyi| | 2011-8-19 15:42 | 只看该作者
学习了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1460

主题

21619

帖子

506

粉丝