首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

中断的悬起与解悬

中断的悬起与解悬

如果中断发生时,正在处理同级或高优先级异常,或者被掩蔽,则中断不能立即得到响应。此 时中断被悬起。中断的悬起状态可以通过“中断设置悬起寄存器(SETPEND)”和“中断悬起清除寄 存器(CLRPEND)”来读取,还可以写它们来手工悬起中断。
悬起寄存器和“解悬”寄存器也可以有 8 对,其用法和用量都与前面介绍的使能/除能寄存器
完全相同,见表 8.2。
表 8.2     SETPEND/CLRPEND 寄存器族 (此表参考官方技术参考手册作了些改编——译者注)
SETPENDs:0xE000_E200 – 0xE000_E21C      ;    CLRPENDs:0xE000E280 - 0xE000_E29C
名称
类型
地址
复位值
描述
SETPEND0
R/W
0xE000_E200
0
中断 0-31的悬起寄存器,共 32个悬起位
位[n],中断#n悬起(异常号 16+n)
SETPEND1
R/W
0xE000_E204
0
中断 32-63的悬起寄存器,共 32个悬起位





SETPEND7
R/W
0xE000_E21C
0
中断 224-239的悬起寄存器,共 16个悬起位










CLRPEND0
R/W
0xE000_E280
0
中断 0-31的解悬寄存器,共 32个解悬位
位[n],中断#n解悬(异常号 16+n)
CLRPEND1
R/W
0xE000_E284
0
中断 32-63的解悬寄存器,共 32个解悬位





CLRPEND7
R/W
0xE000_E29C
0
中断 224-239的解悬寄存器,共 16个解悬位
8.4.1   优先级每个外部中断都有一个对应的优先级寄存器,每个寄存器占用 8位,但是 CM3允许在最“粗线 条”的情况下,只使用最高 3位。4个相临的优先级寄存器拼成一个 32位寄存器。如前所述,根据 优先级组的设置,优先级可以被分为高低两个位段,分别是抢占优先级和亚优先级。优先级寄存器 都可以按字节访问,当然也可以按半字/字来访问。有意义的优先级寄存器数目由芯片厂商实现的 中断数目决定,优先级配置寄存器的详细信息在附录D中给出(表 D.18)。
表 8.3     中断优先级寄存器阵列        0xE000_E400 – 0xE000_E4EF
名称
类型
地址
复位值
描述
PRI_0
R/W
0xE000_E400
0(8位)
外中断#0的优先级
PRI_1
R/W
0xE000_E401
0(8位)
外中断#1的优先级





PRI_239
R/W
0xE000_E4EF
0(8位)
外中断#239的优先级
表8.3B    系统异常优先级寄存器阵列        0xE000_ED18  - 0xE000_ED23
地址
名称
类型
复位值
描述
0xE000_ED18
PRI_4


存储器管理 fault的优先级
0xE000_ED19
PRI_5


总线 fault的优先级
0xE000_ED1A
PRI_6


用法 fault的优先级
0xE000_ED1B
-
-
-
-
0xE000_ED1C
-
-
-
-
0xE000_ED1D
-
-
-
-
0xE000_ED1E
-
-
-
-
0xE000_ED1F
PRI_11


SVC优先级
0xE000_ED20
PRI_12


调试监视器的优先级
0xE000_ED21
-
-
-
-
0xE000_ED22
PRI_14


PendSV的优先级
0xE000_ED23
PRI_15


SysTick的优先级
继承事业,薪火相传
返回列表