设某机有5级中断:L0, L1, L2, L3, L4。其中断响应优先次序为: L0最高,L1 次之,L4最低。 (1)CPU响应0级设备时, IM0 IM1 IM2 IM3 IM4=? (2)CPU响应1级设备时, IM0 IM1 IM2 IM3 IM4=? (3)CPU响应2级设备时, IM0 IM1 IM2 IM3 IM4=? (4)CPU响应3级设备时,IM0 IM1 IM2 IM3 IM4=? (5)CPU响应4级设备时,IM0 IM1 IM2 IM3 IM4=?
时间: 2024-03-04 12:51:24 浏览: 146
STM32实现激光测距传感器测距WT-VL53L0 L1(标准库与HAL库实现)
5星 · 资源好评率100%
根据题目所给的中断响应优先次序,可以得到中断优先级的顺序为:L0 > L1 > L2 > L3 > L4。
对于每个中断请求,CPU会通过中断向量表中的中断向量找到相应的中断服务程序,并在执行该中断服务程序前,需要将当前中断请求的中断优先级和之前已经被响应的中断请求的优先级进行比较,以决定是否需要调整中断屏蔽位IMR的值。
根据题目,可以得到不同中断请求时IMR的值分别为:
(1)CPU响应0级设备时,IM0 IM1 IM2 IM3 IM4=1 1 1 1 1;
(2)CPU响应1级设备时,IM0 IM1 IM2 IM3 IM4=0 1 1 1 1;
(3)CPU响应2级设备时,IM0 IM1 IM2 IM3 IM4=0 0 1 1 1;
(4)CPU响应3级设备时,IM0 IM1 IM2 IM3 IM4=0 0 0 1 1;
(5)CPU响应4级设备时,IM0 IM1 IM2 IM3 IM4=0 0 0 0 1。
解释说明:
(1)当CPU响应0级设备时,IMR的值需要全部置1,即IM0~IM4均为1,因为0级中断的优先级最高,需要屏蔽其他的中断请求。
(2)当CPU响应1级设备时,IMR的值只需要将IM0置为0,即IM0=0,因为此时有更高优先级的0级中断还未处理完毕,需要将IM0置为0,以允许更高优先级的中断请求得到响应。
(3)当CPU响应2级设备时,IMR的值需要将IM0和IM1都置为0,即IM0=IM1=0,因为此时有更高优先级的0级和1级中断还未处理完毕,需要将IM0和IM1均置为0,以允许更高优先级的中断请求得到响应。
(4)当CPU响应3级设备时,IMR的值需要将IM0、IM1和IM2都置为0,即IM0=IM1=IM2=0,因为此时有更高优先级的0级、1级和2级中断还未处理完毕,需要将IM0、IM1和IM2均置为0,以允许更高优先级的中断请求得到响应。
(5)当CPU响应4级设备时,IMR的值需要将IM0、IM1、IM2和IM3都置为0,即IM0=IM1=IM2=IM3=0,因为此时有更高优先级的0级、1级、2级和3级中断还未处理完毕,需要将IM0、IM1、IM2和IM3均置为0,以允许更高优先级的中断请求得到响应。
阅读全文