LPC2106 中斷系統(tǒng)
LPC2106/2105/2104包含3 個(gè)外部中斷輸入(EINT0 EINT1 EINT2 )??捎糜趯⑻幚砥鲝牡綦娔J絾拘选?/p>外設(shè)功率控制寄存器(PCONP – 0xE01FC0C4)
PCONP寄存器允許將所選的外設(shè)功能關(guān)閉以實(shí)現(xiàn)節(jié)電的目的。有少數(shù)外設(shè)功能不能被關(guān)閉(看門狗定時(shí)器、GPIO、管腳連接模塊和系統(tǒng)控制模塊)。PCONP中的每個(gè)位都控制一個(gè)外設(shè),見表 20。每個(gè)位所對(duì)應(yīng)的外設(shè)編號(hào)見VPB 外設(shè)映射一節(jié)。
PCONP
功能
描述
復(fù)位值
0
保留
保留,用戶軟件不要向其寫入1。從保留位讀出的值未被定義。
NA
1
PCTIM0
該位為1 時(shí),定時(shí)器0 使能。為0 時(shí),定時(shí)器0 被關(guān)閉以實(shí)現(xiàn)節(jié)電
1
2
PCTIM1
該位為1 時(shí),定時(shí)器1 使能。為0 時(shí),定時(shí)器1 被關(guān)閉以實(shí)現(xiàn)節(jié)電
1
3
PCURT0
該位為1 時(shí),UART0使能。為0 時(shí),UART0被關(guān)閉以實(shí)現(xiàn)節(jié)電。
1
4
PCUART1
該位為1 時(shí),UART1使能。為0 時(shí),UART1被關(guān)閉以實(shí)現(xiàn)節(jié)電。
1
5
PCPWM0
該位為1 時(shí),PWM0 使能。為0 時(shí),PWM0 被關(guān)閉以實(shí)現(xiàn)節(jié)電。
1
6
保留
保留給PWM1 。用戶軟件不要向其寫入1。從保留位讀出的值未被
NA
7
PCI2C
該位為1 時(shí),I
1
8
PCSPI
2
1
9
PCRTC
C 接口使能。為0 時(shí),I
1
31:10
保留
2
NA
向量中斷控制器l ARM PrimeCell TM向量中斷控制器
l 32個(gè)中斷請(qǐng)求輸入
l 16個(gè)向量IRQ 中斷
l 16個(gè)優(yōu)先級(jí),可動(dòng)態(tài)分配給中斷請(qǐng)求
l 軟件中斷產(chǎn)生
向量中斷控制器(VIC)具有32個(gè)中斷請(qǐng)求輸入,可將其編程分為 3 類:FIQ 、向量IRQ 和非向量IRQ ??删幊谭峙錂C(jī)制意味著不同外設(shè)的中斷優(yōu)先級(jí)可以動(dòng)態(tài)分配并調(diào)整。
快速中斷請(qǐng)求(FIQ )要求具有最高優(yōu)先級(jí)。如果分配給FIQ 的請(qǐng)求多于1 個(gè),VIC 將中斷請(qǐng)求“相或”后向ARM處理器產(chǎn)生FIQ 信號(hào)。當(dāng)只有一個(gè)中斷被分配為FIQ 時(shí)可實(shí)現(xiàn)最短的FIQ 等待時(shí)間,因?yàn)镕IQ 服務(wù)程序只要簡單地啟動(dòng)器件的處理就可以了。但如果分配給FIQ 級(jí)的中斷多于1 個(gè),F(xiàn)IQ 服務(wù)程序從VIC 中讀出一個(gè)字來識(shí)別產(chǎn)生中斷請(qǐng)求的FIQ 中斷源是哪一個(gè)。
向量IRQ 具有中等優(yōu)先級(jí)。該級(jí)別可分配32個(gè)請(qǐng)求中的16個(gè)。32個(gè)請(qǐng)求中的任意一個(gè)都可分配到16個(gè)向量IRQ slot 中的任意一個(gè),其中slot0 具有最高優(yōu)先級(jí),而slot15 則為最低優(yōu)先級(jí)。
非向量IRQ 的優(yōu)先級(jí)最低。
VIC 將所有向量和非向量IRQ “相或”向ARM處理器產(chǎn)生IRQ 信號(hào)。IRQ 服務(wù)程序可通過讀取VIC的一個(gè)寄存器立即啟動(dòng)并跳轉(zhuǎn)到相應(yīng)地址。如果有任意一個(gè)向量 IRQ 發(fā)出請(qǐng)求,VIC 則提供最高優(yōu)先級(jí)請(qǐng)求IRQ 服務(wù)程序的地址,否則提供默認(rèn)程序的地址。該默認(rèn)程序由所有非向量 IRQ 共用。默認(rèn)程序可讀取任何VIC 寄存器以確定哪個(gè)IRQ 被激活。
VIC 中所有的寄存器都為字寄存器。不支持字節(jié)和半字的讀和寫操作。
關(guān)于向量中斷控制器的其它信息請(qǐng)參閱ARMPrimeCell TM向量中斷控制器的相關(guān)文檔。
VIC 寄存器映射
地址
名稱
描述
訪問
復(fù)位值
0xFFFF F000
VICIRQStatus
IRQ 狀態(tài)。該寄存器讀出定義為IRQ 并使能的中斷的狀態(tài)。
RO
0
0xFFFF F004
VICFIQStatus
FIQ 狀態(tài)請(qǐng)求。該寄存器讀取定義為 FIQ 并使能的中斷的狀態(tài)。
RO
0
0xFFFF F008
VICRawIntr
所有中斷的狀態(tài)。該寄存器讀出32個(gè)中斷請(qǐng)求/ 軟件中斷的狀態(tài),不管中斷是否使能或分類。
RO
0
0xFFFF F00C
VICIntSelect
中斷選擇。該寄存器將32個(gè)中斷請(qǐng)求的每個(gè)都分配為FIQ 或IRQ 。
R/W
0
0xFFFF F010
VICIntEnable
中斷使能。該寄存器控制將32個(gè)中斷請(qǐng)求和軟件中斷中的哪些使能為FIQ 或IRQ 。
R/W
0
0xFFFF F014
VICIntEnClr
中斷使能清零。該寄存器允許軟件將中斷使能寄存器中的一個(gè)或多個(gè)位清零。
W
0
0xFFFF F018
VICSoftInt
軟件中斷。該寄存器的內(nèi)容與32個(gè)不同外設(shè)的中斷請(qǐng)求“相或”。
R/W
0
0xFFFF F01C
VICSoftIntClear
軟件中斷清零。該寄存器允許軟件將軟件中斷寄存器中的一個(gè)或多個(gè)位清零。
W
0
0xFFFF F020
VICProtection
保護(hù)使能。該寄存器允許特權(quán)模式下運(yùn)行的軟件對(duì)VIC 寄存器進(jìn)行有限的訪問。
R/W
0
0xFFFF F030
VICVectAddr
向量地址。當(dāng)發(fā)生一個(gè) IRQ 中斷時(shí),IRQ 服務(wù)程序可讀出該寄存器并跳轉(zhuǎn)到讀出的地址。
R/W
0
0xFFFF F034
VICDefVectAddr
默認(rèn)向量地址。該寄存器保存了非向量中斷的中斷服務(wù)程序(ISR )地址。
R/W
0
0xFFFF F100
VICVectAddr0
向量地址0。向量地址寄存器0-15 保存了16個(gè)向量IRQ slot 的中斷服務(wù)程序地址。
R/W
0
0xFFFF F104
VICVectAddr1
向量地址1 寄存器
R/W
0
…
…
…
…
…
0xFFFF F13C
VICVectAddr15
向量地址15寄存器
R/W
0
0xFFFF F200
VICVectCntl0
向量控制0。向量控制寄存器0-15 分別控制16個(gè)向量IRQ slot 中的一個(gè)。Slot0優(yōu)先級(jí)最高,而Slot15優(yōu)先級(jí)最低。
R/W
0
~
~
~
~
~
0xFFFF F23C
VICVectCntl15
向量控制15寄存器
R/W
0
l 軟件中斷寄存器(VICSoftInt- 0xFFFFF018,讀/ 寫)
在執(zhí)行任何邏輯之前,將該寄存器的內(nèi)容與32個(gè)不同外設(shè)的中斷請(qǐng)求相或。
1:強(qiáng)制產(chǎn)生與該位相關(guān)的中斷請(qǐng)求。
0:不強(qiáng)制產(chǎn)生中斷請(qǐng)求。向VICSoftInt寫入0 無效,見VICSoftIntClear。
l 軟件中斷清零寄存器(VICSoftIntClear- 0xFFFFF01C ,只寫)
該寄存器在不需讀取軟件中斷寄存器的情況下,可用軟件清零軟件中斷寄存器中的一個(gè)或多個(gè)位。
1:寫入1 清零軟件中斷寄存器的相應(yīng)位,并解除強(qiáng)制的中斷請(qǐng)求。
0:寫入0 不會(huì)影響VICSoftInt 中的相應(yīng)位。
l 所有中斷狀態(tài)寄存器(VICRawIntr- 0xFFFFF008 ,只讀)
1:對(duì)應(yīng)位的中斷請(qǐng)求或軟件中斷聲明。
0:對(duì)應(yīng)位的中斷請(qǐng)求或軟件中斷未聲明
l 中斷使能寄存器(VICIntEnable- 0xFFFFF010,讀/ 寫)
讀取該寄存器時(shí),1 表示中斷請(qǐng)求使能為FIQ 或IRQ 。
當(dāng)寫該寄存器時(shí),1 使能中斷請(qǐng)求或軟件中斷,0無效。見VICIntEnClear寄存器(表2)
l 中斷使能清零寄存器(VICIntEnClr- 0xFFFFF014,只寫)
1:寫入1 清零中斷使能寄存器中的對(duì)應(yīng)位并禁止對(duì)應(yīng)的中斷請(qǐng)求。
0:寫入0 不影響中斷使能寄存器中的位
l 中斷選擇寄存器(VICIntSelect- 0xFFFFF00C,讀/ 寫)
1:對(duì)應(yīng)的中斷請(qǐng)求分配為FIQ。
0:對(duì)應(yīng)的中斷請(qǐng)求分配為IRQ 。
l IRQ 狀態(tài)寄存器(VICIRQStatus - 0xFFFFF000 ,只讀)
該寄存器讀取使能并分配為IRQ 的中斷請(qǐng)求的狀態(tài),它不對(duì)向量和非向量IRQ 進(jìn)行區(qū)分。
1:對(duì)應(yīng)位的中斷請(qǐng)求使能并分配為IRQ 并且聲明。
l FIQ 狀態(tài)寄存器(VICFIQStatus - 0xFFFFF004,只讀)
該寄存器讀取使能并分配為FIQ 的中斷請(qǐng)求的狀態(tài)。如果有超過一個(gè)請(qǐng)求分配為FIQ ,F(xiàn)IQ 服務(wù)程序可讀取該寄存器來確定是哪一個(gè)(幾個(gè))請(qǐng)求被激活。
1:對(duì)應(yīng)位的中斷請(qǐng)求使能并分配為FIQ 并且聲明。
l 向量控制寄存器0-15 (VICVectCntI0-15- 0xFFFFF200-23C ,讀/ 寫)
Slot0優(yōu)先級(jí)最高,Slot15 優(yōu)先級(jí)最低。在VICVectCntl寄存器中禁止一個(gè)向量IRQ slot 不會(huì)禁止中斷本身,中斷只是變?yōu)榉窍蛄康男问健?/p>
VICVectCntl0-15
功能
復(fù)位值
5
1:向量IRQ 使能,當(dāng)分配的中斷請(qǐng)求或軟件中斷使能,被分配為IRQ 并聲明時(shí),可產(chǎn)生一個(gè)唯一的 ISR 地址對(duì)應(yīng)位的中斷請(qǐng)求使能并分配為FIQ 并且聲明。
0
4 : 0
IRQ slot 的中斷請(qǐng)求或軟件中斷的編號(hào)。作為一個(gè)良好的編程習(xí)慣,不要將把相同的中斷編號(hào)分配給多于一個(gè)使能的向量IRQ slot 。但如果這樣做了,當(dāng)中斷請(qǐng)求或軟件中斷使能,被分配為IRQ 并聲明時(shí),會(huì)使用slot 。 分配給此向量最低編號(hào)的
0
l 向量地址寄存器0-15 (VICVectAddr0-15- 0xFFFFF100-13C ,讀/ 寫)
這些寄存器保存16個(gè)向量IRQ slot 中斷服務(wù)程序的地址。當(dāng)一個(gè)或多個(gè)分配為向量IRQ slot 的中斷請(qǐng)求使能,分配為IRQ ,聲明并時(shí),服務(wù)程序讀取向量地址寄存器(VICVe cAddr )時(shí)會(huì)得到最高優(yōu)先級(jí)slot的IRQ寄存器值。
l 默認(rèn)向量地址寄存器(VICDefVectAddr– 0xFFFF F034 ,讀/ 寫)
這些寄存器保存非向量IRQ 中斷服務(wù)程序的地址。當(dāng)一個(gè)IRQ 服務(wù)程序讀取向量地址寄存器, 并且沒有IRQ slot 響應(yīng)時(shí),則返回該寄存器中的地址。
l 向量地址寄存器(VICVectAddr - 0xFFFFF030 ,讀/ 寫)
當(dāng)發(fā)生一個(gè)IRQ中斷時(shí)。IRQ 服務(wù)程序可讀取該寄存器并跳轉(zhuǎn)到讀出的地址。
當(dāng)任何分配給向量IRQ slot 的中斷請(qǐng)求或軟件中斷使能,分配為IRQ 并聲明時(shí),讀取該寄存器將返回最高優(yōu)先級(jí)向量地址寄存器中的地址。否則返回默認(rèn)向量地址寄存器中的地址。
l 保護(hù)使能寄存器(VICProtection - 0xFFFFF020 ,讀/ 寫)
運(yùn)行在用戶模式下的軟件使用該1 位寄存器來控制對(duì)VIC 寄存器的訪問。
1:VIC 寄存器只能在特權(quán)模式下訪問。
0:VIC 寄存器可在用戶模式或特權(quán)模式下訪問。
中斷源下表列出了每一個(gè)外設(shè)功能的中斷源。每個(gè)外圍設(shè)備都有一條中斷線連接到向量中斷控制器,但有些可能擁有幾個(gè)內(nèi)部中斷標(biāo)志。單個(gè)中斷標(biāo)志也有可能代表一個(gè)以上的中斷。
模塊
標(biāo)志
VIC通道#
WDT
看門狗中斷(WDINT)
0
-
保留給軟件中斷
1
ARM內(nèi)核
EmbeddedICE, DbgCommRx
2
ARM內(nèi)核
EmbeddedICE, DbgCommTx
3
定時(shí)器0
匹配0-3(MR0, MR1, MR2, MR3 )
捕獲0-3(CR0, CR1, CR2, CR3 )
4
定時(shí)器1
匹配0-3(MR0, MR1, MR2, MR3 )
捕獲0-3(CR0, CR1, CR2, CR3 )
5
UART0
Rx線狀態(tài)(RLS )
發(fā)送保持寄存器空(THRE )
Rx數(shù)據(jù)可用(RDA)
字符超時(shí)指示(CTI)
6
UART1
Rx線狀態(tài)(RLS )
發(fā)送