S3C2440的中斷暫存器

2021-09-30 09:17:46 字數 3756 閱讀 7246

s3c2440的中斷暫存器:

1.中斷分兩大類:內部中斷和外部中斷。

2.外部中斷。24個外部中斷占用gpf0-gpf7(eint0-eint7),gpg0-gpg15(eint8-eint23)。用這些腳做中斷輸入,則必須配置引腳為中斷,並且不要上拉。具體參考datesheet資料手冊。

暫存器:extint0-extint2:三個暫存器設定eint0-eint23的觸發方式。

eintflt0-eintflt3:控制濾波時鐘和濾波寬度。

eintpend:這個是中斷掛起暫存器,清除時要寫1,後面還有幾個是寫1清除。當乙個外部中斷(eint4-eint23)發生後,那麼相應的位會被置1。為什麼沒有eint0-eint3,呵呵,看看srcpnd

就知道了,裡面沒有eint4-eint23的位子,所以有了eintpend

eintmask:這個簡單,是遮蔽中斷用的,也就是說位為1時,此次中斷無效。

3.內部中斷。內部中斷有8個暫存器,下面逐一來看。

暫存器:subsrcpnd:當乙個中斷發生後,那麼相應的位會被置1,表示乙個中斷發生了。

intmod:中斷的方式。乙個中斷可以是普通中斷,也可以是快中斷,在這裡設定,但只能有乙個快中斷。

priority:優先順序暫存器,不說了。

srcpnd:當乙個中斷發生後,那麼相應的位會被置1,表示乙個或一類中斷發生了。

intmsk:中斷遮蔽暫存器。

intpnd:中斷發生後,srcpnd中會有位置1,可能好幾個(因為同時可能發生幾個中斷),這些中斷會由優先順序仲裁器選出乙個最緊迫的,然後吧把intpnd中相應位置1,所以同一時間只有一位是1。也就是說前面的暫存器置1 是表示發生了,只有intpnd置1,cpu才會處理。

intoffset:用來表示intpnd

中哪一位置1了,好讓你查詢,普通中斷跳轉時查詢用。清除intpnd

、srcpnd

時自動清除。

4.各暫存器關係

下面看圖說明:

5.中斷過程

a 如果是不帶子中斷的內部中斷:發生後srcpnd相應位置1,如果沒有被intmsk遮蔽,那麼等待進一步處理。

b 如果是帶子中斷的內部中斷:發生後subsrcpnd相應位置1,如果沒有被intsubmsk遮蔽,那麼srcpnd相應位置1,等待進一步處理,幾個subsrcpnd可能對應同乙個srcpnd,對應表如下:

srcpnd

subsrcpnd

int_uart0  

int_rxd0,int_txd0,int_err0

int_uart1  

int_rxd1,int_txd1,int_err1

int_uart2  

int_rxd2,int_txd2,int_err2

int_adc  

int_adc_s, int_tc

int_cam  

int_cam_c, int_cam_p

int_wdt_ac97  

int_wdt, int_ac97

c 如果是外部中斷: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處理。

6.中斷的開啟

a.如果是不帶子中斷的內部中斷,只需設定intmsk,讓它不遮蔽中斷就可以了。

b 如果是帶子中斷的內部中斷,需設定intsubmskintmsk,讓它門不遮蔽中斷就可以了。

c 如果是外部中斷,對於eint8-23需要設定eintmaskintmsk。對於eint0-eint3只需設定intmsk

7.中斷的清除

a.如果是不帶子中斷的內部中斷,只需清除srcpnd,注意清除需位置1。

b 如果是帶子中斷的內部中斷,需清除srcpndsubsrcpnd,注意先清除subsrcpnd,再清除srcpnd。因為,如果你先清除srcpnd的話,然後在清除subsrcpnd的過程中,srcpnd會以為又有中斷發生,又會置1。也就是說一次中斷會響應兩次。所以必須先掐斷源頭。

c 如果是外部中斷,對於eint8-23需要清除eintpendsrcpnd(同樣注意順序)。對於eint0-eint3只需清除srcpnd

本文詳細分析了s3c2440的中斷暫存器,對arm初學者有一定的幫助。

S3C2440中斷暫存器

s3c2440的中斷暫存器 1.中斷分兩大類 內部中斷和外部中斷。2.外部中斷。24個外部中斷占用gpf0 gpf7 eint0 eint7 gpg0 gpg15 eint8 eint23 用這些腳做中斷輸入,則必須配置引腳為中斷,並且不要上拉。具體參考datesheet資料手冊。暫存器 extin...

S3C2440之I O暫存器和中斷暫存器

i o暫存器 一.埠暫存器組 gpacon 0 輸出 1 初始引腳狀態 gpxcon 00 輸入,01 輸出,10 初始引腳狀態,11 保留 gpxdat gpxup 0 允許上拉,1 禁止上拉 一般情況下不需要設定gpxup 二,外部中斷控制暫存器組 extiin0 7 0 000 低電平,001...

S3C2440中斷暫存器有關

1.中斷分兩大類 內部中斷和外部中斷。2.外部中斷。24個外部中斷占用gpf0 gpf7 eint0 eint7 gpg0 gpg15 eint8 eint23 用這些腳做中斷輸入,則必須配置引腳為中斷,並且不要上拉。具體參考datesheet資料手冊。暫存器 extint0 extint2 三個暫...