R0—R7,通用寄存器,共8個。 spa
R8—R12,除快中斷有本身寄存器(Rx_fiq),其餘模式共用,共10個。 指針
R13,棧指針寄存器。用戶、系統共用外,其餘模式有獨立寄存器,共6個。 it
R14,鏈接寄存器。當程序跳轉(BL)、異常模式時,用於保存當前PC值。同上,共6個。 table
R15,程序計數寄存器,全部模式共用,1個。 擴展
CPSR,程序狀態寄存器,同上,1個。 軟件
SPSR,程序狀態保存寄存器,用戶、系統模式沒有。其餘模式各自獨立。進入異常模式時,用於保存用戶、系統模式的CPSR。共5個。 配置
以上爲ARM7內核中的37個寄存器。 硬件
CPSR位分佈 定時器
ARM內核自己只有FRQ和IRQ,2條中斷輸入信號線。爲了擴展中斷源,ARM7採用中斷向量控制器管理中斷源,從而擴展出來了32箇中斷請求輸入。中斷向量控制器屬於內核外設! 請求
CPU的IRQ和FIQ中斷由CPSR的6、7位控制,1禁止,0使能。
中斷分類,FIQ、向量IRQ、非向量IRQ,優先級依次下降。
①FIQ通常只分配一個,不建議分配兩個以上。
②向量IRQ最多可分配16個相愛難過來那個IRQ中斷。
③非向量IRQ中斷只有一個。
基於VIC的每個中斷都有一個VIC通道號。LPC2000系列不足32箇中斷。
模塊 |
標誌 |
VIC通道號 |
WTD |
看門狗 |
0 |
—— |
(保留給軟件) |
1 |
ARM內核 |
EmbeddedICE,Rx |
2 |
ARM內核 |
EmbeddedICE,Tx |
3 |
Timer0 |
匹配、捕獲 |
4 |
Timer1 |
匹配、捕獲 |
5 |
UART0 |
|
6 |
UART1 |
|
7 |
PWM0 |
|
8 |
I²C0 |
SI(狀態改變) |
9 |
SPI0 |
|
10 |
SPI1 |
|
11 |
PLL |
PLL鎖定(PLOCK) |
12 |
RTC |
計數器增長 |
13 |
系統控制 |
EINT0 |
14 |
EINT1 |
15 |
|
EINT2 |
16 |
|
EINT3 |
17 |
|
A/D0 |
|
18 |
I²C1 |
SI(狀態改變) |
19 |
BOD |
掉電檢測 |
20 |
VIC用若干寄存器配置管理32箇中斷源
一,VIC控制配置寄存器
中斷選擇寄存器 VICIntSelect
中斷使能寄存器 VICIntEnable
中斷使能清零寄存器 VICIntEnclr
三個寄存器的32位對應相應32中斷源,實現32箇中斷的配置。
VICIntSelect 相應位置 1 相應中斷分配 FIQ中斷,置 0 分配 IRQ中斷
VICIntEnable 相應位置 1 使能分配的相應的中斷,置 0 無效
VICIntEnClr 相應位置 1 禁止分配的相應的中斷,置 0 無效
二,VIC地址寄存器
向量地址寄存器 VICVectAddr 保存向量IRQ中斷地址
默認向量地址寄存器 VICDefVectAddr 保存非向量IRQ中斷地址
向量地址寄存器0—15 VICVectAddr X 保存向量IRQ中斷地址
向量控制寄存器0—15 VICVectCntl X
VICVectCntl X相應位描述
位 |
31:6 |
5 |
4:0 |
功能 |
保留 |
向量IRQ使能 |
分配給該向量IRQ通道的中斷請求或軟件中斷的編號 |
VICVectCntl X bit5 置1使能中斷,置0並不會禁止中斷自己,中斷只是變爲分享量的形式。ARM7硬件不支持中斷嵌套。
向量IRQ通道有0—15共16個,優先級依次下降。
VICVectCntl X 4:0 bit 存放 中斷通道號(基於VIC的編號0—32),中斷編號放入較高向量IRQ通道控制寄存器,該中斷就是向量IRQ中斷中優先級較高的!
例如:VICVectCntl0 = 0x20 | 4; 定時器0分配爲向量IRQ通道0
三,狀態寄存器
IRQ狀態寄存器 VICIRQStatus 讀取獲得分配並使能爲IRQ的中斷狀態
FIQ狀態寄存器 VICFIQStatus 讀取獲得分配並使能爲FIQ的中斷狀態
全部中斷狀態寄存器 VICRawIntr 讀取獲得全部中斷狀態
以上寄存器位分配,對應VIC通道號
讀取,某位是 1 則表明該中斷激活。