学习ARM开发(18)

上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中断是否打开的。 这几个寄存器如下:

1. 程序状态寄存器(CPSR).

这个寄存器里有两位可以控制是否响应FIQ或IRQ中断的设置。如果把这两位全部置1,就全部不响应中断了。后面会用到这两位来关中断的,在RTOS里就需要使用到这两位关中断作为临界区。

2. 中断控制寄存器(INTCON)

这个寄存器只使用到低3位:0,1,2。
第0位设置为1时,不使用FIQ的中断;设置为0时,就是使用FIQ的中断。
第1位设置为1时,不使用IRQ的中断;设置为0时,就是使用IRQ的中断。
第2位设置为1时,使用非向量的方式IRQ中断,设置为0时使用向量方式IRQ中断。

3. 中断模式寄存器(INTMOD)

这个寄存器设置26个中断源使用中断的方式。当相应位设置为0时,就表示使用IRQ中断方式,当相应位设置为1时,就表示使用FIQ的中断方式。

4. 中断屏蔽寄存器(INTMSK)

这个寄存器是用来指定那位可以响应中断的。其中第26位比较特别的,它是全局中断屏蔽位。如果设置它为1,就全部中断都不响应了。0到25位就是26个中断源的屏蔽位,如果设置为1,就表示不响应中断,设置为0就表示响应中断。

5. 清除中断位寄存器(I_ISPC)

当中断发生之后,还想再次发生中断。那么就需要清除相应的中断位,这时就使用I_ISPC中断寄存器。
当设置这个寄存器相应位为1时,就清除了相应的中断位,下一个中断到来时,就可以再次响应了。

通过设置上面几个中断寄存器,就可以让S3C44B0的中断工作了。中断是非常重要的,一定要熟练地使用。不管什么样的CPU,都是使用这样的东西。中断是现代高速CPU与低速设备之间对话的机制,没有这个机制,就根本不能让高速的CPU高效地工作了。

 

你可能感兴趣的:(c,工作)