📄 lpc2106.h
字号:
/****************************************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 + -