ARM7内核寄存器、中断向量控制器

           ARM7内核寄存器分布

ARM7内核寄存器、中断向量控制器_第1张图片ARM7TDMI-S内核共37个寄存器。

R0R7,通用寄存器,共8个。

R8R12,除快中断有自己寄存器(Rx_fiq),其他模式共用,共10个。

R13,栈指针寄存器。用户、系统共用外,其他模式有独立寄存器,共6个。

R14,连接寄存器。当程序跳转(BL)、异常模式时,用于保存当前PC值。同上,共6个。

R15,程序计数寄存器,所有模式共用,1个。

CPSR,程序状态寄存器,同上,1个。

SPSR,程序状态保存寄存器,用户、系统模式没有。其他模式各自独立。进入异常模式时,用于保存用户、系统模式的CPSR。共5个。

以上为ARM7内核中的37个寄存器。

CPSR位分布

ARM7内核寄存器、中断向量控制器_第2张图片

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

ARM内核本身只有FRQIRQ2条中断输入信号线。为了扩展中断源,ARM7采用中断向量控制器管理中断源,从而扩展出来了32个中断请求输入。中断向量控制器属于内核外设!

ARM7内核寄存器、中断向量控制器_第3张图片

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

ARM7内核寄存器、中断向量控制器_第4张图片三,状态寄存器

IRQ状态寄存器  VICIRQStatus  读取得到分配并使能为IRQ的中断状态

FIQ状态寄存器  VICFIQStatus  读取得到分配并使能为FIQ的中断状态

所有中断状态寄存器 VICRawIntr 读取得到所有中断状态

以上寄存器位分配,对应VIC通道号

读取,某位是 则代表该中断激活。

你可能感兴趣的:(ARM7中断向量控制器)