⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hwd_lpc21_reg.h

📁 采用LPC的芯片做的气体排放检测,包括气体成分分析,数据的处理,数据传输给工作站.
💻 H
📖 第 1 页 / 共 2 页
字号:
/*-------------------------------------------------------------------------
			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 + -