ARM7內核寄存器、中斷向量控制器

           ARM7內核寄存器分佈

ARM7TDMI-S內核共37個寄存器。

R0R7,通用寄存器,共8個。 spa

R8R12,除快中斷有本身寄存器(Rx_fiq),其餘模式共用,共10個。 指針

R13,棧指針寄存器。用戶、系統共用外,其餘模式有獨立寄存器,共6個。 it

R14,鏈接寄存器。當程序跳轉(BL)、異常模式時,用於保存當前PC值。同上,共6個。 table

R15,程序計數寄存器,全部模式共用,1個。 擴展

CPSR,程序狀態寄存器,同上,1個。 軟件

SPSR,程序狀態保存寄存器,用戶、系統模式沒有。其餘模式各自獨立。進入異常模式時,用於保存用戶、系統模式的CPSR。共5個。 配置

以上爲ARM7內核中的37個寄存器。 硬件

CPSR位分佈 定時器

ARM7LPC2000系列,中斷向量控制器。

ARM內核自己只有FRQIRQ2條中斷輸入信號線。爲了擴展中斷源,ARM7採用中斷向量控制器管理中斷源,從而擴展出來了32箇中斷請求輸入。中斷向量控制器屬於內核外設! 請求

CPUIRQFIQ中斷由CPSR67位控制,1禁止,0使能。

中斷分類,FIQ、向量IRQ、非向量IRQ,優先級依次下降。

FIQ通常只分配一個,不建議分配兩個以上。

②向量IRQ最多可分配16個相愛難過來那個IRQ中斷。

③非向量IRQ中斷只有一個。

基於VIC的每個中斷都有一個VIC通道號。LPC2000系列不足32箇中斷。

模塊

標誌

VIC通道號

WTD

看門狗

0

——

(保留給軟件)

1

ARM內核

EmbeddedICERx

2

ARM內核

EmbeddedICETx

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      相應位置 相應中斷分配 FIQ中斷,置 分配 IRQ中斷

VICIntEnable     相應位置 使能分配的相應的中斷,置 無效

VICIntEnClr      相應位置 禁止分配的相應的中斷,置 無效

二,VIC地址寄存器

向量地址寄存器          VICVectAddr     保存向量IRQ中斷地址

默認向量地址寄存器      VICDefVectAddr  保存非向量IRQ中斷地址      

向量地址寄存器015     VICVectAddr X   保存向量IRQ中斷地址

向量控制寄存器015     VICVectCntl X

VICVectCntl X相應位描述

31:6

5

4:0

功能

保留

向量IRQ使能

分配給該向量IRQ通道的中斷請求或軟件中斷的編號

VICVectCntl X   bit5  1使能中斷,置0並不會禁止中斷自己,中斷只是變爲分享量的形式ARM7硬件不支持中斷嵌套。

向量IRQ通道有01516個,優先級依次下降。

VICVectCntl X    4:0 bit 存放  中斷通道號(基於VIC的編號032),中斷編號放入較高向量IRQ通道控制寄存器,該中斷就是向量IRQ中斷中優先級較高的!

例如:VICVectCntl0 = 0x20 | 4;         定時器0分配爲向量IRQ通道0

三,狀態寄存器

IRQ狀態寄存器  VICIRQStatus  讀取獲得分配並使能爲IRQ的中斷狀態

FIQ狀態寄存器  VICFIQStatus  讀取獲得分配並使能爲FIQ的中斷狀態

全部中斷狀態寄存器 VICRawIntr 讀取獲得全部中斷狀態

以上寄存器位分配,對應VIC通道號

讀取,某位是 則表明該中斷激活。

相關文章
相關標籤/搜索