?? 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 + -