s3c2440 中斷掛起寄存器INTPND
中斷掛起寄存器INTOND包括32個(gè)比特位,其中每一個(gè)比特位均表示相應(yīng)中斷請求是否擁有最高優(yōu)先級,它們處于等待中斷服務(wù)狀態(tài)并且沒有被屏蔽。INTPNd寄存器在優(yōu)先級仲裁結(jié)束之后,僅有一個(gè)比特位被置1,并且被置1的中斷請求向CPU產(chǎn)生IRQ,在執(zhí)行IRQ中斷服務(wù)時(shí),可以讀取寄存器來確定32個(gè)中斷源中哪個(gè)中斷源被執(zhí)行。
同SRCPND一樣,INTPND也需要在中斷服務(wù)程序中加入清0操作,位于SRCPND寄存器清0操作之后。可以通過向INTPND寄存器寫入一個(gè)數(shù)據(jù)對相應(yīng)位清0.僅將需要位清除,其余保持原值不變。
清除INTPND寄存器時(shí)應(yīng)該注意:INTPND寄存器通過寫1清0。如果INTPND寄存器設(shè)置為1的比特位通過寫0清0,那么INTPND寄存器和INTOFFSET寄存器可能在某種情況下獲得不可預(yù)知的值。所以,不要對INTPND寄存器值為1的比特位寫0。正確清除INTPND寄存器比特位的方法是向寄存器寫INTPND寄存器寫INTPND寄存器值。
另外:INTMOD中斷模式寄存器中只能有一位設(shè)為1,即FIQ只能分配一個(gè)。
對于一般中斷IRQ,可能同時(shí)有幾個(gè)中斷被觸發(fā),未被INTMSK寄存器屏蔽的中斷經(jīng)過比較后,選出優(yōu)先級最高的中斷,此中斷在INTPND寄存器中的相應(yīng)位被置1。然后CPU進(jìn)入中斷模式進(jìn)行處理。中斷服務(wù)程序可以通過讀取INTPND寄存器或者INTOFFSET寄存器來確定中斷源。