?? lpc213xdef.h
字號(hào):
/*--------------------------------------------------------------------------
文 件 名 : LPC213XDEF.H
創(chuàng) 建 人 : ARM水鳥 HotPower@126.com
創(chuàng) 建 日 期 : 2005.7.23 0:38
最近修改日期 : 2006.5.09 15:18
創(chuàng) 建 地 點(diǎn) : 西安大雁塔村隊(duì)部
版 本 號(hào) : V5.18 (五一勞動(dòng)版)
說(shuō) 明 : 已經(jīng)過(guò)硬件調(diào)試
由于在不斷更新中,故新舊版本以修改日期為準(zhǔn)
備 注 : 由此文件出現(xiàn)的問(wèn)題,ARM水鳥不負(fù)任何責(zé)任
修 改 原 因 : 全面替代LPC213x.h
展示結(jié)構(gòu)指針在ARM之特殊寄存器應(yīng)用
特殊寄存器變量可在WATCH窗口中顯示,
為軟件仿真提供最大的方便。
應(yīng) 用 簡(jiǎn) 介:
SystemObj::SystemObj(void)
{
volatile unsigned int start;
Disable_IRQ();//關(guān)中斷
PINSEL->PIN_SEL0 = 0x00000000; // 設(shè)置管腳連接GPIO
PINSEL->PIN_SEL1 = 0x00000000; // 設(shè)置管腳連接GPIO
PINSEL->PIN_SEL2 = 0x00000000; // 設(shè)置管腳連接GPIO
PINSEL->PIN_SEL0 |= (P0_15_EINT2 << P0_15_PINSEL);// P0.15連接到EINT2
P0->IODIR = 0x00000000; // 設(shè)置P0口為輸入
P1->IODIR = 0x00000000; // 設(shè)置P1口為輸入
VIC->IntEnable = 0;
VIC->SoftIntClr = 0xffffffff;//清除所有軟中斷標(biāo)志
VIC->IntSelect = 0;//全部中斷為IRQ中斷或默認(rèn)中斷
for(int i = 0; i <= 15; i ++) {
VIC->VectAddrs[i] = i;//刷新向量地址寄存器VICVectAddr0~VICVectAddr15
}
for (start = 1; start < 10000; start ++);
SystemInit();
Enable_IRQ();//開中斷
}
-------------------------------------------------------------------------------*/
#ifndef __LPC213xDEF_H
#define __LPC213xDEF_H
typedef volatile unsigned long LPC_REG;// Hardware register definition
#define __noinit__ __attribute__((zero_init))//變量不初始化為0
typedef unsigned char uint8; //無(wú)符號(hào)8位整型變量
typedef signed char int8; //有符號(hào)8位整型變量
typedef unsigned short uint16;//無(wú)符號(hào)16位整型變量
typedef signed short int16; //有符號(hào)16位整型變量
typedef unsigned int uint32;//無(wú)符號(hào)32位整型變量
typedef signed int int32; //有符號(hào)32位整型變量
typedef float fp32; //單精度浮點(diǎn)數(shù)(32位長(zhǎng)度
typedef double fp64; //雙精度浮點(diǎn)數(shù)(64位長(zhǎng)度)
#define __0 (LPC_REG)0
#define __1 (LPC_REG)1
#define __2 (LPC_REG)2
#define __3 (LPC_REG)3
#define __4 (LPC_REG)4
#define __5 (LPC_REG)5
#define __6 (LPC_REG)6
#define __7 (LPC_REG)7
#define __8 (LPC_REG)8
#define __9 (LPC_REG)9
#define __10 (LPC_REG)10
#define __11 (LPC_REG)11
#define __12 (LPC_REG)12
#define __13 (LPC_REG)13
#define __14 (LPC_REG)14
#define __15 (LPC_REG)15
#define __16 (LPC_REG)16
#define __17 (LPC_REG)17
#define __18 (LPC_REG)18
#define __19 (LPC_REG)19
#define __20 (LPC_REG)20
#define __21 (LPC_REG)21
#define __22 (LPC_REG)22
#define __23 (LPC_REG)23
#define __24 (LPC_REG)24
#define __25 (LPC_REG)25
#define __26 (LPC_REG)26
#define __27 (LPC_REG)27
#define __28 (LPC_REG)28
#define __29 (LPC_REG)29
#define __30 (LPC_REG)30
#define __31 (LPC_REG)31
#define VICIntSel_Watchdog 0//看門狗中斷(WDINT)
#define VICIntSel_SoftInt1 1//保留給軟件中斷
#define VICIntSel_DbgCommRx 2//ARM內(nèi)核中斷
#define VICIntSel_DbgCommTx 3//ARM內(nèi)核中斷
#define VICIntSel_Time0 4//定時(shí)器0中斷
#define VICIntSel_Time1 5//定時(shí)器1中斷
#define VICIntSel_UART0 6//UART0中斷
#define VICIntSel_UART1 7//UART1中斷
#define VICIntSel_PWM0 8//PWM0中斷
#define VICIntSel_I2C0 9//I2C0中斷
#define VICIntSel_SPI0 10//SPI0中斷
#define VICIntSel_SSP 11//SSP中斷
#define VICIntSel_SPI1 11//SPI1中斷
#define VICIntSel_PLL 12//PLL中斷
#define VICIntSel_RTC 13//RTC中斷
#define VICIntSel_EINT0 14//系統(tǒng)控制外部中斷0
#define VICIntSel_EINT1 15//系統(tǒng)控制外部中斷1
#define VICIntSel_EINT2 16//系統(tǒng)控制外部中斷2
#define VICIntSel_EINT3 17//系統(tǒng)控制外部中斷3
#define VICIntSel_ADC0 18//A/D轉(zhuǎn)換器0中斷
#define VICIntSel_I2C1 19//I2C1中斷
#define VICIntSel_BOD 20//掉電檢測(cè)中斷
#define VICIntSel_ADC1 21//A/D轉(zhuǎn)換器1中斷
#define VICIntSel_SoftInt22 22//保留給軟件中斷
#define VICIntSel_SoftInt23 23//保留給軟件中斷
#define VICIntSel_SoftInt24 24//保留給軟件中斷
#define VICIntSel_SoftInt25 25//保留給軟件中斷
#define VICIntSel_SoftInt26 26//保留給軟件中斷
#define VICIntSel_SoftInt27 27//保留給軟件中斷
#define VICIntSel_SoftInt28 28//保留給軟件中斷
#define VICIntSel_SoftInt29 29//保留給軟件中斷
#define VICIntSel_SoftInt30 30//保留給軟件中斷
#define VICIntSel_SoftInt31 31//保留給軟件中斷
#define VICIntSel_Enable 32//使能向量中斷
/*--------------------------------------------------------------------
應(yīng)用示例
VIC->VectCntls[0] = VICIntSel_Enable//使能IRQ中斷
| VICIntSel_EINT0;//獲取EINT0的IRQ級(jí)別
VIC->VectAddrs[0] = (long) IRQ_Eint0;//取INT0中斷服務(wù)地址
VIC->IntEnable = (1 << VICIntSel_EINT0); //使能EINT0中斷
----------------------------------------------------------------------*/
/*---------------------------------------------------------------------
P0口鏈接配置位定義
----------------------------------------------------------------------*/
#define P0_0 0//P0.0
#define TXD0 P0_0//UART0的發(fā)送器輸出
#define PWM1 P0_0//脈寬調(diào)制器輸出1
#define P0_1 1//P0.1
#define RXD0 P0_1//UART0的接收器輸入
#define PWM3 P0_1//脈寬調(diào)制器輸出3
#define P0_2 2//P0.2
#define SCL0 P0_2//I2C0時(shí)鐘輸入/輸出。開漏輸出(符合I2C規(guī)范)
#define P0_3 3//P0.3
#define SDA0 P0_3//I2C0數(shù)據(jù)輸入/輸出。開漏輸出(符合I2C規(guī)范)
#define P0_4 4//P0.4
#define SCK0 P0_4//SPI0的串行時(shí)鐘。SPI時(shí)鐘從主機(jī)輸出,從機(jī)輸入
#define AD0_6 P0_4//A/D轉(zhuǎn)換器0輸入6。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_5 5//P0.5
#define MISO0 P0_5//SPI0主機(jī)輸入從機(jī)輸出端。從機(jī)到主機(jī)的數(shù)據(jù)傳輸
#define AD0_7 P0_5//A/D轉(zhuǎn)換器0輸入7。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_6 6//P0.6
#define MOSI0 P0_6//SPI0主機(jī)輸出從機(jī)輸入端。主機(jī)到從機(jī)的數(shù)據(jù)傳輸
#define AD1_0 P0_6//A/D轉(zhuǎn)換器1輸入0。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_7 7//P0.7
#define SSEL0 P0_7//SPI0從機(jī)選擇。選擇SPI接口用作從機(jī)
#define PWM2 P0_7//脈寬調(diào)制器輸出2
#define P0_8 8//P0.8
#define TXD1 P0_8//UART1的發(fā)送器輸出
#define PWM4 P0_8//脈寬調(diào)制器輸出4
#define AD1_1 P0_8//A/D轉(zhuǎn)換器1輸入1。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_9 9//P0.9
#define RXD1 P0_9//UART1的接收器輸入
#define PWM6 P0_9//脈寬調(diào)制器輸出6
#define P0_10 10//P0.10
#define RTS1 P0_10//UART1請(qǐng)求發(fā)送出端(僅用于LP138)
#define CAP1_0 P0_10//定時(shí)器1的捕獲輸入通道0
#define AD1_2 P0_10//A/D轉(zhuǎn)換器1輸入2。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_11 11//P0.11
#define CTS1 P0_11//UART1清除發(fā)送入端(僅用于LP138)
#define CAP1_1 P0_11//定時(shí)器1的捕獲輸入通道1
#define SCL1 P0_11//I2C1時(shí)鐘輸入/輸。開漏輸出(符合I2C規(guī)范)
#define P0_12 12//P0.12
#define DSR1 P0_12//UART1數(shù)據(jù)設(shè)置就緒端(僅用于 LPC2138)
#define MAT1_0 P0_12//定時(shí)器1的匹配輸出通道0
#define AD1_3 P0_12//A/D轉(zhuǎn)換器1輸入3。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_13 13//P0.13
#define DTR1 P0_13//UART1數(shù)據(jù)終端就緒
#define MAT1_1 P0_13//定時(shí)器1的匹配輸出通道1
#define AD1_4 P0_13//A/D轉(zhuǎn)換器1輸入4。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_14 14//P0.14
#define DCD1 P0_14//UART1數(shù)據(jù)載波檢測(cè)輸入(僅用于 LPC2138)
#define SDA1 P0_14//I2C1數(shù)據(jù)輸入/輸出。開漏輸出(符合I2C規(guī)范)
#define P0_15 15//P0.15
#define RI1 P0_15//UART1鈴響指示輸入(僅用于 LPC2138)
#define AD1_5 P0_15//A/D轉(zhuǎn)換器1輸入5。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_16 16//P0.16
#define P0_17 17//P0.17
#define SCK1 P0_17//SPI1的串行時(shí)鐘。SPI時(shí)鐘從主機(jī)輸出,從機(jī)輸入
#define P0_18 18//P0.18
#define MISO1 P0_18//SPI1主機(jī)輸入從機(jī)輸出端。從機(jī)到主機(jī)的數(shù)據(jù)傳輸
#define P0_19 19//P0.19
#define MOSI1 P0_19//SPI1主機(jī)輸出從機(jī)輸入端。主機(jī)到從機(jī)的數(shù)據(jù)傳輸
#define P0_20 20//P0.20
#define SSEL1 P0_20//SPI1從機(jī)選擇。選擇SPI接口用作從機(jī)
#define P0_21 21//P0.21
#define PWM5 P0_21//脈寬調(diào)制器輸出5
#define AD1_6 P0_21//A/D轉(zhuǎn)換器1輸入6。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_22 22//P0.22
#define AD1_7 P0_22//A/D轉(zhuǎn)換器1輸入7。該模擬輸入總是連接到相應(yīng)的管腳(僅用于 LPC2138)
#define P0_23 23//P0.23
#define P0_24 24//P0.24
#define P0_25 25//P0.25
#define AD0_4 P0_25//A/D轉(zhuǎn)換器0輸入4。該模擬輸入總是連接到相應(yīng)的管腳.D/A 轉(zhuǎn)換器輸出(僅用于 LPC2138)
#define P0_26 26//P0.26
#define AD0_5 P0_26//A/D轉(zhuǎn)換器0輸入5。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_27 27//P0.27
#define AD0_0 P0_27//A/D轉(zhuǎn)換器0輸入0。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_28 28//P0.28
#define AD0_1 P0_28//A/D轉(zhuǎn)換器0輸入1。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_29 29//P0.29
#define AD0_2 P0_29//A/D轉(zhuǎn)換器0輸入2。該模擬輸入總是連接到相應(yīng)的管腳
#define CAP0_3 P0_29//定時(shí)器0的捕獲輸入通道3
#define MAT0_3 P0_29//定時(shí)器0的匹配輸出通道3
#define P0_30 30//P0.30
#define AD0_3 P0_30//A/D轉(zhuǎn)換器0輸入3。該模擬輸入總是連接到相應(yīng)的管腳
#define P0_31 31//P0.31
/*------------------------------------------
P1口GPIO位尋址位定義
-------------------------------------------*/
#define P1_0 0//P1.0
#define P1_1 1//P1.1
#define P1_2 2//P1.2
#define P1_3 3//P1.3
#define P1_4 4//P1.4
#define P1_5 5//P1.5
#define P1_6 6//P1.6
#define P1_7 7//P1.7
#define P1_8 8//P1.8
#define P1_9 9//P1.9
#define P1_10 10//P1.10
#define P1_11 11//P1.11
#define P1_12 12//P1.12
#define P1_13 13//P1.13
#define P1_14 14//P1.14
#define P1_15 15//P1.15
#define P1_16 16//P1.16
#define P1_17 17//P1.17
#define P1_18 18//P1.18
#define P1_19 19//P1.19
#define P1_20 20//P1.20
#define P1_21 21//P1.21
#define P1_22 22//P1.22
#define P1_23 23//P1.23
#define P1_24 24//P1.24
#define P1_25 25//P1.25
#define P1_26 26//P1.26
#define P1_27 27//P1.27
#define P1_28 28//P1.28
#define P1_29 29//P1.29
#define P1_30 30//P1.30
#define P1_31 __31//P1.31
/*---------------------------------------
RTC中斷位置寄存器ILR位定義
----------------------------------------*/
#define RTCCIF 0//為1時(shí),計(jì)數(shù)器增量中斷模塊產(chǎn)生中斷。向該位寫入1清除計(jì)數(shù)器增量中斷。
#define RTCALF 1//為1時(shí),報(bào)警寄存器產(chǎn)生中斷。向該位寫入1清除報(bào)警中斷。
/*---------------------------------------
RTC時(shí)鐘控制寄存器CCR位定義
----------------------------------------*/
#define CLKEN 0//時(shí)鐘使能當(dāng)該位為1 時(shí),時(shí)間計(jì)數(shù)器使能。
#define CTCRST 1//CTC 復(fù)位為1 時(shí),時(shí)鐘節(jié)拍計(jì)數(shù)器復(fù)位。
#define CLKSRC 4//如果該位為1,CTC 計(jì)數(shù)連接在RTCX1 和RTCX2 兩端的32kHz振蕩器信號(hào)。
/*---------------------------------------
RTC計(jì)數(shù)器增量中斷寄存器CIIR位定義
----------------------------------------*/
#define IMSEC 0//為1時(shí),秒值的增加產(chǎn)生一次中斷。
#define IMMIN 1//為1時(shí),分值的增加產(chǎn)生一次中斷。
#define IMHOUR 2//為1時(shí),小時(shí)值的增加產(chǎn)生一次中斷。
#define IMDOM 3//為1時(shí),日期(月)值的增加產(chǎn)生一次中斷。
#define IMDOW 4//為1時(shí),星期值的增加產(chǎn)生一次中斷。
#define IMDOY 5//為1時(shí),日期(年)值的增加產(chǎn)生一次中斷。
#define IMMON 6//為1時(shí),月值的增加產(chǎn)生一次中斷。
#define IMYEAR 7//為1時(shí),年值的增加產(chǎn)生一次中斷。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -