一、外部中斷主要暫存器
extintn
register
address r/w description reset value
extint0 0x56000088
r/w external interrupt control register 0 0x000000
extint1 0x5600008c
r/w external interrupt control register 1 0x000000
extint2 0x56000090
r/w external interrupt control register 2 0x000000
exintn暫存器用於配置外部中斷請求訊號方式是電平觸發還是邊沿觸發。exint0的[0:2]用於設定eint0觸發方式:
000 = 低電平
001 = 高電平
01x = 上公升沿
10x = 下降沿
11x = 上公升下降沿均觸發
l srcpnd(0x4a000000)
srcpnd暫存器中32位每一位都用於表示對應中斷源是否發生中斷。可以通過向srcpnd暫存器對應寫入」1」清除相應中斷標誌。
l intpnd(0x4a000010)
經過中斷優先順序仲裁後選出優先順序最高的中斷,顯示在intpnd暫存器相應位。然後cpu進入中斷處理。該暫存器與srcpnd相似,向應寫入」1」清除相應中斷標誌。
l intmsk(0x4a000008)
當intmsk暫存器相應位被置」1」,cpu不會進入中斷服務請求。即使是srcpnd相應位為」1」。
l intmod(0x4a000004)
intmod暫存器用於配置中斷髮式,當某位設定為」1」,改為中斷被設定未fiq;否則,中斷設定為irq。
二、中斷過程
外部中斷:
eint0-eint3發生後srcpnd相應位置1,如果沒有被intmsk遮蔽,那麼等待進一步處理。eint4-eint23發生後eintpend相應位置1,如果沒有被eintmask遮蔽,那麼srcpnd相應位eint4-7 或eint8-23置1,如果沒有被intmsk遮蔽,等待進一步處理,幾個eintpend對應同乙個srcpnd,對應表如下:
srcpnd eintpend
eint0 eint0
eint1 eint1
eint2 eint2
eint3 eint3
eint4-7 eint4-eint4
eint8-23 eint8-eint23
中斷都等待進一步處理了。接下來從srcpnd往下看,看intmsk。如果中斷被遮蔽了,就不用說了(注意:快中斷也能被遮蔽)。如果沒有被遮蔽,那麼會進一步到intmod。如果是快中斷,那麼直接出來,進入fiq(即cpu進入快中斷模式處理)。如果是普通中斷,那麼srcpnd可以有多為置1(fiq只能有乙個),這時就會經過priority選出乙個優先順序高的,然後把根據選出的中斷把intpnd相應位置1(注意:只能選出乙個),進入irq,讓cpu處理。
三、 中斷的開啟
如果是外部中斷,對於eint8-23需要設定eintmask和intmsk。對於eint0-eint3只需設定intmsk。
四、中斷的清除
如果是外部中斷,對於eint8-23需要清除eintpend和srcpnd(同樣注意順序)。對於eint0-eint3只需清除srcpnd。
mini2440外部irq中斷實驗
void delay int times 延時函式 void beep init void 蜂鳴器初始化 void beep void void key1 init 按鍵1初始化 static void irq key1 isr void eint8 rsrcpnd 1 5 rintpnd 1 5 ...
s3c2440外部中斷操作
要想正確地執行2440的外部中斷,一般需要完成兩個部分內容 中斷初始化和中斷處理函式。在具體執行中斷之前,要初始化好要用的中斷。2440的外部中斷引腳eint與通用io引腳f和g復用,要想使用中斷功能,就要把相應的引腳配置成中斷模式,如我們想把埠f0設定成外部中斷,而其他引腳功能不變,則gpfcon...
2440之中斷管理
中斷處理 中斷是嵌入式裡最重要的乙個概念。一般乙個系統對於乙個裝置要麼採用中斷方式,要麼採用輪詢方式 中斷方式可以有效地減少處理器負荷 但是如果大量採用中斷則有可能降低處理速度 因為中斷處理破壞了處理器的流水機制。複習下微機原理中中斷處理過程和中斷機制。2440中支援fiq 快速中斷 和irq 普通...