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

📄 lpc2106.h

📁 基于Philips LPC2104芯片
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                               广州周立功单片机发展有限公司
**                                     研    究    所
**                                        产品一部 
**
**                                 http://www.zlgmcu.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: LPC2106.h
**创   建   人: 陈明计
**最后修改日期: 2003年7月23日
**描        述: 定义lpc2104/lpc2105/lpc2106的特殊寄存器及固件程序
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.0
** 日 期: 2003年7月1日
** 描 述: 原始版本
**
**-------------------------------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.1
** 日 期: 2003年7月7日
** 描 述: 改变I2c的定义
**
**-------------------------------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.2
** 日 期: 2003年7月19日
** 描 述: 增加存储器加速模块的特殊寄存器
**
**-------------------------------------------------------------------------------------------------
** 创建人: 陈明计
** 版  本: v1.3
** 日 期: 2003年7月23日
** 描 述: 根据正式文档更改寄存器名,增加固件函数入口
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

/* External Interrupts */
/* 外部中断控制寄存器 */
#define EXTINT          (*((volatile unsigned char *) 0xE01FC140))	//{7:3,(EINT2,EINT1,EINT0)}有中断变1,再写1清零,7~3为保留位,不能写1
#define EXTWAKE         (*((volatile unsigned char *) 0xE01FC144))	//{7:3,(EINTWAKE2,EINTWAKE1,EINTWAKE0)}为1时使处理器从掉电模式唤醒,

/* SMemory mapping control. */
/* 内存remap控制寄存器 */
#define MEMMAP          (*((volatile unsigned long *) 0xE01FC040))	//{7:2,(MAP1:0)}00:BOOT装载模式,中断向量从BootBlock重新映射;01:用户Flash模式,中断向量不重新映射,位于Flash中
																	//				10:用户RAM模式,中断向量从SDRAM重新映射;	11:保留不用		bit7:2不能写1		

/* Phase Locked Loop (PLL) */
/* PLL控制寄存器 */
#define PLLCON          (*((volatile unsigned char *) 0xE01FC080))	//PLL使能连接寄存器{7:2,(PLLC,PLLE)} 01:PLL使能,PLL将锁定指定频率,但系统还是用Fosc;11:系统使用PLL的输出作时钟源
#define PLLCFG          (*((volatile unsigned char *) 0xE01FC084))	//PLL倍分频寄存器  {7,PSEL1:0,MSEL4:0}	PLL分频器值P(0~3),PLL倍频器值M
#define PLLSTAT         (*((volatile unsigned short*) 0xE01FC088))	//PLL当前状态寄存器{15:11,PLOCK,PLLC,PLLE,7,PSEL1:0,MSEL4:0} PLL当前的状态值,PLOCK锁定状态,为1时表示锁定频率;
#define PLLFEED         (*((volatile unsigned char *) 0xE01FC08C))	//PLL馈送序列寄存器{7:0}PLL馈送序列,向PLLFEED连续写入0xAA和0x55(其间要禁止中断)从而使PLLCON和PLLCFG生效

/* Power Control */
/* 功率控制寄存器 */
#define PCON            (*((volatile unsigned char *) 0xE01FC0C0))	//处理器功率控制器 {7:2,PD,IDL}PD使振荡器和所有片内时钟停止,外部中断可唤醒振荡器并使PD清零,处理器继续运行
#define PCONP           (*((volatile unsigned long *) 0xE01FC0C4))	//外设功率控制器   {31:10,PCRTC,PCSPI,PCI2C,保留6,PCPWM0,PCUART1,PCUART0,PCTIME1,PCTIME0}为1时,外设使能,为0关闭以省电

/* VPB Divider */
/* VLSI外设总线(VPB)分频寄存器 */
#define VPBDIV          (*((volatile unsigned char *) 0xE01FC100))	//控制VPB频率和系统频率的关系:{7:2,VPBDIV1:0}00:Fcclk/4;01:Fcclk;10:Fcclk/2;11:reserved

/* Memory Accelerator Module (MAM) */
/* 存储器加速模块 */
#define MAMCR           (*((volatile unsigned char *) 0xE01FC000))	//MAM功能控制寄存器	{7:2,MAM1:0}00:禁止;01:部分使能;10:完全使能;11:reserved
#define MAMTIM          (*((volatile unsigned char *) 0xE01FC004))	//MAM定时寄存器		{7:3,2:0}决定用n个cclk访问Flash,000:reserved;001~111:1~7cclk,要改变时先通过MAMCR关掉MAM再写MAMTIM

/* Vectored Interrupt Controller (VIC) */
/* 向量中断控制器(VIC)的特殊寄存器 */
#define VICIRQStatus    (*((volatile unsigned long *) 0xFFFFF000))	//IRQ状态寄存器		{31:0}对应位的中断请求使能分配为IRQ且声明,不区分向量和非向量中断
#define VICFIQStatus    (*((volatile unsigned long *) 0xFFFFF004))	//FIQ状态寄存器		{31:0}对应位的中断请求被使能并分配为FIQ且声明
#define VICRawIntr      (*((volatile unsigned long *) 0xFFFFF008))	//所有中断状态寄存器	{31:0}所有32个中断请求和软件中断的状态(硬件有请求或者软件有声明),无论使能或分类
#define VICIntSelect    (*((volatile unsigned long *) 0xFFFFF00C))	//中断选择寄存器 	{31:0}位为1:被分配为FIQ,0:被分配为IRQ
#define VICIntEnable    (*((volatile unsigned long *) 0xFFFFF010))	//中断使能寄存器 	{31:0}读出时,位为1表示使能为FIQ和IRQ,写入1表示可使能,0表示该中断无效
#define VICIntEnClr     (*((volatile unsigned long *) 0xFFFFF014))	//中断使能清零寄存器{31:0}0:不影响VICIntEnable中的位,1:清零VICIntEnable中的位并禁止对应中断请求
#define VICSoftInt      (*((volatile unsigned long *) 0xFFFFF018))	//软件中断寄存器	{31:0}由软件模拟产生与该位硬件对应的中断请求,在执行之前,将该寄存器的内容与32外设中断请求相或。
																	//位为1会强制产生中断。但是不能写入0清除中断,应通过VICSoftIntClr
#define VICSoftIntClear (*((volatile unsigned long *) 0xFFFFF01C))	//软件中断清楚寄存器{31:0}写入1可清零软件中断寄存器中对应的位,并解除强制的中断请求
#define VICProtection   (*((volatile unsigned long *) 0xFFFFF020))	//VIC保护使能寄存器	{31:0}对应位为1表示该VIC寄存器只能在特权模式下使用;为0都可访问
#define VICVectAddr     (*((volatile unsigned long *) 0xFFFFF030))	//向量地址寄存器
#define VICDefVectAddr  (*((volatile unsigned long *) 0xFFFFF034))	//
#define VICVectAddr0    (*((volatile unsigned long *) 0xFFFFF100))
#define VICVectAddr1    (*((volatile unsigned long *) 0xFFFFF104))
#define VICVectAddr2    (*((volatile unsigned long *) 0xFFFFF108))
#define VICVectAddr3    (*((volatile unsigned long *) 0xFFFFF10C))
#define VICVectAddr4    (*((volatile unsigned long *) 0xFFFFF110))
#define VICVectAddr5    (*((volatile unsigned long *) 0xFFFFF114))
#define VICVectAddr6    (*((volatile unsigned long *) 0xFFFFF118))
#define VICVectAddr7    (*((volatile unsigned long *) 0xFFFFF11C))
#define VICVectAddr8    (*((volatile unsigned long *) 0xFFFFF120))
#define VICVectAddr9    (*((volatile unsigned long *) 0xFFFFF124))
#define VICVectAddr10   (*((volatile unsigned long *) 0xFFFFF128))
#define VICVectAddr11   (*((volatile unsigned long *) 0xFFFFF12C))
#define VICVectAddr12   (*((volatile unsigned long *) 0xFFFFF130))
#define VICVectAddr13   (*((volatile unsigned long *) 0xFFFFF134))
#define VICVectAddr14   (*((volatile unsigned long *) 0xFFFFF138))
#define VICVectAddr15   (*((volatile unsigned long *) 0xFFFFF13C))
#define VICVectCntl0    (*((volatile unsigned long *) 0xFFFFF200))
#define VICVectCntl1    (*((volatile unsigned long *) 0xFFFFF204))
#define VICVectCntl2    (*((volatile unsigned long *) 0xFFFFF208))
#define VICVectCntl3    (*((volatile unsigned long *) 0xFFFFF20C))
#define VICVectCntl4    (*((volatile unsigned long *) 0xFFFFF210))
#define VICVectCntl5    (*((volatile unsigned long *) 0xFFFFF214))
#define VICVectCntl6    (*((volatile unsigned long *) 0xFFFFF218))
#define VICVectCntl7    (*((volatile unsigned long *) 0xFFFFF21C))
#define VICVectCntl8    (*((volatile unsigned long *) 0xFFFFF220))
#define VICVectCntl9    (*((volatile unsigned long *) 0xFFFFF224))
#define VICVectCntl10   (*((volatile unsigned long *) 0xFFFFF228))
#define VICVectCntl11   (*((volatile unsigned long *) 0xFFFFF22C))
#define VICVectCntl12   (*((volatile unsigned long *) 0xFFFFF230))
#define VICVectCntl13   (*((volatile unsigned long *) 0xFFFFF234))
#define VICVectCntl14   (*((volatile unsigned long *) 0xFFFFF238))
#define VICVectCntl15   (*((volatile unsigned long *) 0xFFFFF23C))

/* General Purpose Input/Output (GPIO) */
/* 通用并行IO口的特殊寄存器 */
#define IOPIN           (*((volatile unsigned long *) 0xE0028000))	//GPIO管脚值寄存器	{31:0}读取该寄存器可获得当前GPIO管脚的值,反应外部情况;写入只写到输出寄存器
#define IOSET           (*((volatile unsigned long *) 0xE0028004))	//GPIO输出置位寄存器{31:0}当管脚配置为GPIO时,写入1可使管脚输出高电平,写0无效,读入时只读寄存器值,不反应外部情况
#define IODIR           (*((volatile unsigned long *) 0xE0028008))	//GPIO方向寄存器	{31:0}0:输入;1:输出
#define IOCLR           (*((volatile unsigned long *) 0xE002800C))	//GPIO清零寄存器	{31:0}当管脚配置为GPIO时,写入1可使管脚输出低电平,写0无效

/* Pin Connect Block */
/* 管脚连接模块控制寄存器 */
#define PINSEL0         (*((volatile unsigned long *) 0xE002C000))	//PINSEL0			{31:0}Pin0.0~Pin0.15管脚的功能配置,每一管脚两bit,通常:00为GPIO,01第二功能,10第三功能,11保留
#define PINSEL1         (*((volatile unsigned long *) 0xE002C004))	//PINSEL1			{31:0}Pin0.16~Pin0.31管脚功能配置,每一管脚两bit,通常:00为GPIO,01第二功能

/* Universal Asynchronous Receiver Transmitter 0 (UART0) */
/* 通用异步串行口0(UART0)的特殊寄存器 */
#define U0RBR           (*((volatile unsigned char *) 0xE000C000))	//U0接受缓冲寄存器		{7:0}	只读,读取时DLAB(除数锁存寄存器)必须为0;LSB(Bit0)为最早收到的位
#define U0THR           (*((volatile unsigned char *) 0xE000C000))	//U0发送缓冲寄存器		{7:0}	只写,写入时DLAB(除数锁存寄存器)必须为0;LSB(Bit0)为最早发送的位
#define U0IER           (*((volatile unsigned char *) 0xE000C004))	//U0中断使能寄存器		{7:3,Rx线状态中断使能,THRE中断使能,RBR中断使能}
#define U0IIR           (*((volatile unsigned char *) 0xE000C008))	//U0中断标示寄存器		{(7:6FIFO使能),5:4,(3:1中断标示),中断挂起}	
#define U0FCR           (*((volatile unsigned char *) 0xE000C008))	//U0的FIFO控制寄存器	{(7:6Rx触发选择),5:4,DMA模式选择,TxFIFO复位,RxFIFO复位,FIFO使能}
#define U0LCR           (*((volatile unsigned char *) 0xE000C00C))	//U0线路控制寄存器		{除数锁存访问位,间隔控制,(5:4奇偶选择),奇偶使能,停止位选择,字长选择}
#define U0LSR           (*((volatile unsigned char *) 0xE000C014))	//U0线路状态寄存器		{Rx FIFO错RXFE,发送器空TEMT,发送保持器空THRE,间隔中断BI,帧错误FE,奇偶错误PE,溢出错误OE,接受就绪RDR}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -