📄 hwd_lpc21_reg.h
字号:
/*-------------------------------------------------------------------------
LPC2104片内外设资源定义:(数据结构形式)
Huang Weide
**------------------------------------------------------------------------*/
#ifndef _HWD_LPC21_reg_h_
#define _HWD_LPC21_reg_h_
typedef volatile unsigned int LPC21_REG;//定义硬件寄存器数据类型
/* 外部中断控制寄存器 */
//#define EXTINT (*((volatile unsigned char *) 0xE01FC140))
//#define EXTWAKE (*((volatile unsigned char *) 0xE01FC144))
//--- 外部中断产生时,查询以下 3 位之一可以确定,也可以用来清除中断标志---//
#define VIC_FLAG_EINT0 (1<<0)//define用于定义符号常量,一般用大写表示,而变量名用小写。
#define VIC_FLAG_EINT1 (1<<1)
#define VIC_FLAG_EINT2 (1<<2)
//--- CPU 处于掉电状态只有外部中断可以唤醒,设置 EXTWAKE 使能唤醒功能 ---//
#define VIC_WAKE_BY_EINT0 (1<<0)
#define VIC_WAKE_BY_EINT1 (1<<1)
#define VIC_WAKE_BY_EINT2 (1<<2)
//***************************************************************************
// 定义PLL锁相环控制寄存器的用户接口
//***************************************************************************
typedef struct _LPC21_PLL {// LPC21_PLL_BASE == 0xE01FC080
LPC21_REG PllCON;
LPC21_REG PllCFG;
LPC21_REG PllSTAT;
LPC21_REG PllFEED;
} LPC21S_PLL,*LPC21PS_PLL;
//***************************************************************************
// 定义向量中断控制器(VIC)的特殊寄存器的用户接口
//***************************************************************************
typedef struct _LPC21_VIC {// LPC21_VIC_BASE == 0xFFFFF000
LPC21_REG VicIRQStatus; //读出定义为 IRQ 并使能的中断的状态0
LPC21_REG VicFIQStatus; //读出定义为 FIQ 并使能的中断的状态1
LPC21_REG VicRawIntr; //读出 32 个中断请求/软件中断的原始状态2
LPC21_REG VicIntSelect; //将某个中断设置为 IRQ(0) 或 FIQ(1)3
LPC21_REG VicIntEnable; //中断使能4
LPC21_REG VicIntEnClr; //中断使能清零5
LPC21_REG VicSoftInt; //软件中断请求使能6
LPC21_REG VicSoftIntClear;//软件中断请求使能清零7
LPC21_REG VicProtection; //保护使能 8
LPC21_REG Reserved0[3]; //保留 3 DWORD 9
LPC21_REG VicVectAddr; //向量地址,当某个IRQ产生时,其入口地址被自动复制到此寄存器 12
LPC21_REG VicDefVectAddr; //默认向量地址,保存非向量中断服务程序入口地址13
LPC21_REG Reserved1[50]; //保留 50 DWORD 14
LPC21_REG VicVectAddrss[16];//向量地址寄存器 64
LPC21_REG Reserved2[48]; //保留 48 DWORD 80
LPC21_REG VicVectCntl[16];//向量控制寄存器 128
} LPC21S_VIC,*LPC21PS_VIC;
#define LPC21_VIC_BASE (LPC21PS_VIC)0xFFFFF000 //中断控制寄存器基址
//-------VIC中断源通道号宏定义---------//
#define VIC_CHNL_WDT 0
#define VIC_CHNL_SOFT 1
#define VIC_CHNL_ICERX 2
#define VIC_CHNL_ICETX 3
#define VIC_CHNL_T0 4
#define VIC_CHNL_T1 5
#define VIC_CHNL_UART0 6
#define VIC_CHNL_UART1 7
#define VIC_CHNL_PWM0 8
#define VIC_CHNL_I2C 9
#define VIC_CHNL_SPI 10
#define VIC_CHNL_RESERVED 11
#define VIC_CHNL_PLL 12
#define VIC_CHNL_RTC 13
#define VIC_CHNL_EINT0 14
#define VIC_CHNL_EINT1 15
#define VIC_CHNL_EINT2 16
//----VIC中断在寄存器中对应的位的定义----//
#define VIC_SELECT_WDT (1<<0) //(1<<0)?
#define VIC_SELECT_SOFT (1<<1)
#define VIC_SELECT_ICERX (1<<2)
#define VIC_SELECT_ICETX (1<<3)
#define VIC_SELECT_T0 (1<<4)
#define VIC_SELECT_T1 (1<<5)
#define VIC_SELECT_UART0 (1<<6)
#define VIC_SELECT_UART1 (1<<7)
#define VIC_SELECT_PWM0 (1<<8)
#define VIC_SELECT_I2C (1<<9)
#define VIC_SELECT_SPI (1<<10)
#define VIC_SELECT_RESERVED (1<<11)
#define VIC_SELECT_PLL (1<<12)
#define VIC_SELECT_RTC (1<<13)
#define VIC_SELECT_EINT0 (1<<14)
#define VIC_SELECT_EINT1 (1<<15)
#define VIC_SELECT_EINT2 (1<<16)
#define VIC_SELECT_EINT3 (1<<17)
//***************************************************************************
// 定义通用并行IO口特殊寄存器的用户接口
//***************************************************************************
#define LPC21_PIO_0_BASE (LPC21PS_PIO)0xE0028000
#define LPC21_PIO_1_BASE (LPC21PS_PIO)0xE0028010
typedef struct _LPC21_PIO {// LPC21_PIO_BASE == 0xE0028000
LPC21_REG IoPIN;
LPC21_REG IoSET;
LPC21_REG IoDIR;
LPC21_REG IoCLR;
} LPC21S_PIO,*LPC21PS_PIO;
/* 管脚连接模块控制寄存器 */
//#define PINSEL0 (*((volatile unsigned long *) 0xE002C000))
#define PIN_USED_GPIO (unsigned int)(0)
#define PIN0_1_USED_UART0_OR (unsigned int)(5<<0)
#define PIN0_1_USED_UART0_AND (unsigned int)(5<<1)
#define PIN0_USED_PWM1 (unsigned int)(2<<0)
#define PIN1_USED_PWM3 (unsigned int)(2<<2)
#define PIN2_USED_I2C_SCL (unsigned int)(1<<4)
#define PIN2_USED_CAP0_0 (unsigned int)(2<<4)
#define PIN3_USED_I2C_SDA (unsigned int)(1<<6)
#define PIN3_USED_MAT0_0 (unsigned int)(2<<6)
#define PIN4_USED_SPI_SCK (unsigned int)(1<<8)
#define PIN4_USED_CAP0_1 (unsigned int)(2<<8)
#define PIN5_USED_SPI_MISO (unsigned int)(1<<10)
#define PIN5_USED_MAT0_1 (unsigned int)(2<<10)
#define PIN6_USED_SPI_MOSI (unsigned int)(1<<12)
#define PIN6_USED_CAP0_2 (unsigned int)(2<<12)
#define PIN7_USED_SPI_SSEL (unsigned int)(1<<14)
#define PIN7_USED_CAP0_1 (unsigned int)(2<<14)
#define PIN8_9_USED_UART1_OR (unsigned int)(5<<16)
#define PIN8_9_USED_UART1_AND (unsigned int)(5<<17)
#define PIN8_USED_PWM4 (unsigned int)(2<<16)
#define PIN9_USED_PWM6 (unsigned int)(2<<18)
#define PIN10_USED_UART1_RTS (unsigned int)(1<<20)
#define PIN10_USED_CAP1_0 (unsigned int)(2<<20)
#define PIN11_USED_UART1_CTS (unsigned int)(1<<22)
#define PIN11_USED_CAP1_1 (unsigned int)(2<<22)
#define PIN12_USED_UART1_DSR (unsigned int)(1<<24)
#define PIN12_USED_MAT1_0 (unsigned int)(2<<24)
#define PIN13_USED_UART1_DTR (unsigned int)(1<<26)
#define PIN13_USED_MAT1_1 (unsigned int)(2<<26)
#define PIN14_USED_UART1_CD (unsigned int)(1<<28)
#define PIN14_USED_EINT1 (unsigned int)(2<<28)
#define PIN15_USED_UART1_RI (unsigned int)(1<<30)
#define PIN15_USED_EINT2 (unsigned int)(2<<30)
//#define PINSEL1 (*((volatile unsigned long *) 0xE002C004))
#define PIN16_USED_EINT0 (unsigned int)(1<<0)
#define PIN16_USED_MAT0_2 (unsigned int)(2<<0)
#define PIN17_USED_CAP1_2 (unsigned int)(1<<2)
#define PIN18_USED_CAP1_3 (unsigned int)(1<<4)
#define PIN19_USED_MAT1_2 (unsigned int)(2<<6)
#define PIN20_USED_MAT1_3 (unsigned int)(2<<8)
#define PIN21_USED_PWM5 (unsigned int)(2<<10)
// PIN22~26 只作 GPIO ,PIN27~31 用于ICE,并非用户接口
//***************************************************************************
// 定义通用并行IO口特殊寄存器的用户接口
//***************************************************************************
#define LPC21_SPI_BASE (LPC21PS_SPI)0xE0020000
typedef struct _LPC21_SPI {
LPC21_REG SpiSPCR;
LPC21_REG SpiSPSR;
LPC21_REG SpiSPDR;
LPC21_REG SpiSPCCR;
LPC21_REG SpiSPINT;
} LPC21S_SPI,*LPC21PS_SPI;
//SPI 控制寄存器的 控制位定义
#define SPI_CTRL_MASTER (1<<5)
#define SPI_CTRL_LAST_BIT_F (1<<6)
#define SPI_CTRL_INT_EN (1<<7)
//SPI 状态寄存器的 控制位定义
#define SPI_STATUS_ABORT (1<<3)
#define SPI_STATUS_MODE_ERR (1<<4)
#define SPI_STATUS_READ_OVER (1<<5)
#define SPI_STATUS_WRITE_ERR (1<<6)
#define SPI_STATUS_FINISH (1<<7)
//***************************************************************************
// 定义通用并行IO口特殊寄存器的用户接口
//***************************************************************************
#define LPC21_UART0_BASE (LPC21PS_UART)0xE000C000
#define LPC21_UART1_BASE (LPC21PS_UART)0XE0010000
typedef struct _LPC21_UART {
LPC21_REG UBUF; //(*((volatile unsigned char *) 0xE0010000))
LPC21_REG UIER; //(*((volatile unsigned char *) 0xE0010004))
LPC21_REG UIIR; //(*((volatile unsigned char *) 0xE0010008))
// LPC21_REG UFCR; //(*((volatile unsigned char *) 0xE0010008))
LPC21_REG ULCR; //(*((volatile unsigned char *) 0xE001000C))
LPC21_REG UMCR; //(*((volatile unsigned char *) 0xE0010010))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -