中断使能和清除使能、中断挂起和清除挂起

时间:2024-03-18 16:50:06

中断使能和清除使能

中断控制寄存器为可编程的,用于控制中断请求(异常编号16及以上)的使能和禁止。
可以通过两个独立的地址编程这个寄存器:
中断使能和清除使能、中断挂起和清除挂起

将设置和清除操作分为两个不同的地址具有诸多优势:
1 减少了使能中断所需要的步骤,也就减少了程序代码并且降低了执行时间。
2 多个应用程序进程同时访问寄存器时,可能会导致已编程的控制信息丢失。


中断挂起和清除挂起

如果一个中断发生了,却无法立即处理(比如处理器正在处理更高优先级的中断),这个中断请求将会被挂起。挂起状态保存在一个寄存器中,如果处理器的当前优先级还没有降低到可以处理挂起的请求,并且没有手动清除挂起状态,该状态将会一直保持合法。

可以通过操作中断设置挂起(SETPEND)和中断清除挂起(CLRPEND)这两个寄存器(见表9.2)来访问或修改中断挂起状态。同中断使能控制寄存器类似,中断挂起状态寄存器也是在物理上为一个寄存器,而通过两个地址来实现设置和清除相关位。这就使得每一位都可以独立修改,而无须担心在两个应用程序进程竞争访问时出现的数据丢失。中断使能和清除使能、中断挂起和清除挂起

有些情况下,可能需要清除某个中断的挂起状态。例如,如果一个产生中断的外设需要重新编程,就得关闭这个外设的中断,重新设置控制寄存器,并且在重新使能外设以前清除中断挂起状态(在设置期间可能会有中断产生)。