LPC2106 中断系统
扫描二维码
随时随地手机看文章
LPC2106/2105/2104包含3 个外部中断输入(EINT0 EINT1 EINT2 )。可用于将处理器从掉电模式唤醒。
外设功率控制寄存器(PCONP – 0xE01FC0C4)PCONP寄存器允许将所选的外设功能关闭以实现节电的目的。有少数外设功能不能被关闭(看门狗定时器、GPIO、管脚连接模块和系统控制模块)。PCONP中的每个位都控制一个外设,见表 20。每个位所对应的外设编号见VPB 外设映射一节。
PCONP
功能
描述
复位值
0
保留
保留,用户软件不要向其写入1。从保留位读出的值未被定义。
NA
1
PCTIM0
该位为1 时,定时器0 使能。为0 时,定时器0 被关闭以实现节电
1
2
PCTIM1
该位为1 时,定时器1 使能。为0 时,定时器1 被关闭以实现节电
1
3
PCURT0
该位为1 时,UART0使能。为0 时,UART0被关闭以实现节电。
1
4
PCUART1
该位为1 时,UART1使能。为0 时,UART1被关闭以实现节电。
1
5
PCPWM0
该位为1 时,PWM0 使能。为0 时,PWM0 被关闭以实现节电。
1
6
保留
保留给PWM1 。用户软件不要向其写入1。从保留位读出的值未被
NA
7
PCI2C
该位为1 时,I
1
8
PCSPI
2
1
9
PCRTC
C 接口使能。为0 时,I
1
31:10
保留
2
NA
向量中断控制器l ARM PrimeCell TM向量中断控制器
l 32个中断请求输入
l 16个向量IRQ 中断
l 16个优先级,可动态分配给中断请求
l 软件中断产生
向量中断控制器(VIC)具有32个中断请求输入,可将其编程分为 3 类:FIQ 、向量IRQ 和非向量IRQ 。可编程分配机制意味着不同外设的中断优先级可以动态分配并调整。
快速中断请求(FIQ )要求具有最高优先级。如果分配给FIQ 的请求多于1 个,VIC 将中断请求“相或”后向ARM处理器产生FIQ 信号。当只有一个中断被分配为FIQ 时可实现最短的FIQ 等待时间,因为FIQ 服务程序只要简单地启动器件的处理就可以了。但如果分配给FIQ 级的中断多于1 个,FIQ 服务程序从VIC 中读出一个字来识别产生中断请求的FIQ 中断源是哪一个。
向量IRQ 具有中等优先级。该级别可分配32个请求中的16个。32个请求中的任意一个都可分配到16个向量IRQ slot 中的任意一个,其中slot0 具有最高优先级,而slot15 则为最低优先级。
非向量IRQ 的优先级最低。
VIC 将所有向量和非向量IRQ “相或”向ARM处理器产生IRQ 信号。IRQ 服务程序可通过读取VIC的一个寄存器立即启动并跳转到相应地址。如果有任意一个向量 IRQ 发出请求,VIC 则提供最高优先级请求IRQ 服务程序的地址,否则提供默认程序的地址。该默认程序由所有非向量 IRQ 共用。默认程序可读取任何VIC 寄存器以确定哪个IRQ 被激活。
VIC 中所有的寄存器都为字寄存器。不支持字节和半字的读和写操作。
关于向量中断控制器的其它信息请参阅ARMPrimeCell TM向量中断控制器的相关文档。
VIC 寄存器映射
地址
名称
描述
访问
复位值
0xFFFF F000
VICIRQStatus
IRQ 状态。该寄存器读出定义为IRQ 并使能的中断的状态。
RO
0
0xFFFF F004
VICFIQStatus
FIQ 状态请求。该寄存器读取定义为 FIQ 并使能的中断的状态。
RO
0
0xFFFF F008
VICRawIntr
所有中断的状态。该寄存器读出32个中断请求/ 软件中断的状态,不管中断是否使能或分类。
RO
0
0xFFFF F00C
VICIntSelect
中断选择。该寄存器将32个中断请求的每个都分配为FIQ 或IRQ 。
R/W
0
0xFFFF F010
VICIntEnable
中断使能。该寄存器控制将32个中断请求和软件中断中的哪些使能为FIQ 或IRQ 。
R/W
0
0xFFFF F014
VICIntEnClr
中断使能清零。该寄存器允许软件将中断使能寄存器中的一个或多个位清零。
W
0
0xFFFF F018
VICSoftInt
软件中断。该寄存器的内容与32个不同外设的中断请求“相或”。
R/W
0
0xFFFF F01C
VICSoftIntClear
软件中断清零。该寄存器允许软件将软件中断寄存器中的一个或多个位清零。
W
0
0xFFFF F020
VICProtection
保护使能。该寄存器允许特权模式下运行的软件对VIC 寄存器进行有限的访问。
R/W
0
0xFFFF F030
VICVectAddr
向量地址。当发生一个 IRQ 中断时,IRQ 服务程序可读出该寄存器并跳转到读出的地址。
R/W
0
0xFFFF F034
VICDefVectAddr
默认向量地址。该寄存器保存了非向量中断的中断服务程序(ISR )地址。
R/W
0
0xFFFF F100
VICVectAddr0
向量地址0。向量地址寄存器0-15 保存了16个向量IRQ slot 的中断服务程序地址。
R/W
0
0xFFFF F104
VICVectAddr1
向量地址1 寄存器
R/W
0
…
…
…
…
…
0xFFFF F13C
VICVectAddr15
向量地址15寄存器
R/W
0
0xFFFF F200
VICVectCntl0
向量控制0。向量控制寄存器0-15 分别控制16个向量IRQ slot 中的一个。Slot0优先级最高,而Slot15优先级最低。
R/W
0
~
~
~
~
~
0xFFFF F23C
VICVectCntl15
向量控制15寄存器
R/W
0
l 软件中断寄存器(VICSoftInt- 0xFFFFF018,读/ 写)
在执行任何逻辑之前,将该寄存器的内容与32个不同外设的中断请求相或。
1:强制产生与该位相关的中断请求。
0:不强制产生中断请求。向VICSoftInt写入0 无效,见VICSoftIntClear。
l 软件中断清零寄存器(VICSoftIntClear- 0xFFFFF01C ,只写)
该寄存器在不需读取软件中断寄存器的情况下,可用软件清零软件中断寄存器中的一个或多个位。
1:写入1 清零软件中断寄存器的相应位,并解除强制的中断请求。
0:写入0 不会影响VICSoftInt 中的相应位。
l 所有中断状态寄存器(VICRawIntr- 0xFFFFF008 ,只读)
1:对应位的中断请求或软件中断声明。
0:对应位的中断请求或软件中断未声明
l 中断使能寄存器(VICIntEnable- 0xFFFFF010,读/ 写)
读取该寄存器时,1 表示中断请求使能为FIQ 或IRQ 。
当写该寄存器时,1 使能中断请求或软件中断,0无效。见VICIntEnClear寄存器(表2)
l 中断使能清零寄存器(VICIntEnClr- 0xFFFFF014,只写)
1:写入1 清零中断使能寄存器中的对应位并禁止对应的中断请求。
0:写入0 不影响中断使能寄存器中的位
l 中断选择寄存器(VICIntSelect- 0xFFFFF00C,读/ 写)
1:对应的中断请求分配为FIQ。
0:对应的中断请求分配为IRQ 。
l IRQ 状态寄存器(VICIRQStatus - 0xFFFFF000 ,只读)
该寄存器读取使能并分配为IRQ 的中断请求的状态,它不对向量和非向量IRQ 进行区分。
1:对应位的中断请求使能并分配为IRQ 并且声明。
l FIQ 状态寄存器(VICFIQStatus - 0xFFFFF004,只读)
该寄存器读取使能并分配为FIQ 的中断请求的状态。如果有超过一个请求分配为FIQ ,FIQ 服务程序可读取该寄存器来确定是哪一个(几个)请求被激活。
1:对应位的中断请求使能并分配为FIQ 并且声明。
l 向量控制寄存器0-15 (VICVectCntI0-15- 0xFFFFF200-23C ,读/ 写)
Slot0优先级最高,Slot15 优先级最低。在VICVectCntl寄存器中禁止一个向量IRQ slot 不会禁止中断本身,中断只是变为非向量的形式。
VICVectCntl0-15
功能
复位值
5
1:向量IRQ 使能,当分配的中断请求或软件中断使能,被分配为IRQ 并声明时,可产生一个唯一的 ISR 地址对应位的中断请求使能并分配为FIQ 并且声明。
0
4 : 0
IRQ slot 的中断请求或软件中断的编号。作为一个良好的编程习惯,不要将把相同的中断编号分配给多于一个使能的向量IRQ slot 。但如果这样做了,当中断请求或软件中断使能,被分配为IRQ 并声明时,会使用slot 。 分配给此向量最低编号的
0
l 向量地址寄存器0-15 (VICVectAddr0-15- 0xFFFFF100-13C ,读/ 写)
这些寄存器保存16个向量IRQ slot 中断服务程序的地址。当一个或多个分配为向量IRQ slot 的中断请求使能,分配为IRQ ,声明并时,服务程序读取向量地址寄存器(VICVe cAddr )时会得到最高优先级slot的IRQ寄存器值。
l 默认向量地址寄存器(VICDefVectAddr– 0xFFFF F034 ,读/ 写)
这些寄存器保存非向量IRQ 中断服务程序的地址。当一个IRQ 服务程序读取向量地址寄存器, 并且没有IRQ slot 响应时,则返回该寄存器中的地址。
l 向量地址寄存器(VICVectAddr - 0xFFFFF030 ,读/ 写)
当发生一个IRQ中断时。IRQ 服务程序可读取该寄存器并跳转到读出的地址。
当任何分配给向量IRQ slot 的中断请求或软件中断使能,分配为IRQ 并声明时,读取该寄存器将返回最高优先级向量地址寄存器中的地址。否则返回默认向量地址寄存器中的地址。
l 保护使能寄存器(VICProtection - 0xFFFFF020 ,读/ 写)
运行在用户模式下的软件使用该1 位寄存器来控制对VIC 寄存器的访问。
1:VIC 寄存器只能在特权模式下访问。
0:VIC 寄存器可在用户模式或特权模式下访问。
中断源下表列出了每一个外设功能的中断源。每个外围设备都有一条中断线连接到向量中断控制器,但有些可能拥有几个内部中断标志。单个中断标志也有可能代表一个以上的中断。
模块
标志
VIC通道#
WDT
看门狗中断(WDINT)
0
-
保留给软件中断
1
ARM内核
EmbeddedICE, DbgCommRx
2
ARM内核
EmbeddedICE, DbgCommTx
3
定时器0
匹配0-3(MR0, MR1, MR2, MR3 )
捕获0-3(CR0, CR1, CR2, CR3 )
4
定时器1
匹配0-3(MR0, MR1, MR2, MR3 )
捕获0-3(CR0, CR1, CR2, CR3 )
5
UART0
Rx线状态(RLS )
发送保持寄存器空(THRE )
Rx数据可用(RDA)
字符超时指示(CTI)
6
UART1
Rx线状态(RLS )
发送