s3c2440外部中斷操作

2021-06-08 08:56:38 字數 2197 閱讀 5278

**:

要想正確地執行2440的外部中斷,一般需要完成兩個部分內容:中斷初始化和中斷處理函式。

在具體執行中斷之前,要初始化好要用的中斷。2440的外部中斷引腳eint與通用io引腳f和g復用,要想使用中斷功能,就要把相應的引腳配置成中斷模式,如我們想把埠f0設定成外部中斷,而其他引腳功能不變,則gpfcon=(gpfcon & ~0x3) | 0x2。配置完引腳後,還需要配置具體的中斷功能。我們要開啟某一中斷的遮蔽,這樣才能響應該中斷,相對應的暫存器為intmsk;還要設定外部中斷的觸發方式,如低電平、高電平、上公升沿、下降沿等,相對應的暫存器為extintn。另外由於eint4到eint7共用乙個中斷向量,eint8到eint23也共用乙個中斷向量,而intmsk只負責總的中斷向量的遮蔽,要具體開啟某一具體的中斷遮蔽,還需要設定eintmask。上面介紹的是最基本的初始化,當然還有一些其他的配置,如當需要用到快速中斷時,要使用intmod,當需要配置中斷優先順序時,要使用priority等。

為了把這個中斷處理函式與在2440啟動檔案中定義的中斷向量表相對應上,需要先定義中斷入口位址變數,該中斷入口位址必須與中斷向量表中的位址一致,然後把該中斷處理函式的首位址傳遞給該變數,即中斷入口位址。

下面就是乙個外部中斷的例項。開發板上一共有四個按鍵,分別連到了eint0,eint1,eint2和eint4,我們讓這四個按鍵分別控制連線在b5~b8引腳上的四個led:按一下鍵則led亮,再按一下則滅:

#define _isr_startaddress 0x33ffff00

#define u32 unsigned int

#define pisr_eint0 (*(unsigned *)(_isr_startaddress+0x20))

#define pisr_eint1 (*(unsigned *)(_isr_startaddress+0x24))

#define pisr_eint2 (*(unsigned *)(_isr_startaddress+0x28))

#define pisr_eint4_7 (*(unsigned *)(_isr_startaddress+0x30))

#define rsrcpnd (*(volatile unsigned *)0x4a000000) //interrupt request status

#define rintmsk (*(volatile unsigned *)0x4a000008) //interrupt mask control

#define rintpnd (*(volatile unsigned *)0x4a000010) //interrupt request status

#define rgpbcon (*(volatile unsigned *)0x56000010) //port b control

#define rgpbdat (*(volatile unsigned *)0x56000014) //port b data

#define rgpbup (*(volatile unsigned *)0x56000018) //pull-up control b

#define rgpfcon (*(volatile unsigned *)0x56000050) //port f control

#define rextint0 (*(volatile unsigned *)0x56000088) //external interrupt control register 0

#define reintmask (*(volatile unsigned *)0x560000a4) //external interrupt mask

#define reintpend (*(volatile unsigned *)0x560000a8) //external interrupt pending

static void __irq key1_isr(void) //eint1

static void __irq key2_isr(void) //eint4}

static void __irq key3_isr(void) //eint2

void __irq key4_isr(void) //eint0

void main(void)

S3C2440彙編中斷程式

雖然現在c語言已經成為主流力量,但是我還是非常喜歡用彙編寫 的高效率,高速度是有天獨厚的,但我更喜歡他那種 指哪打哪 的高透明。265m的ram任你主宰,想把那句話放在哪,就放在哪。這種任性你懂嗎?學習中斷程式兩大感悟 自己卡住的地方 2,位址切記不要寫錯。我就是在這裡卡了將近一天時間。s3c244...

S3C2440的中斷機制

1.中斷原理圖 2.中斷過程 如果是不帶子中斷的內部中斷 發生後srcpnd相應位置1,那麼等待進一步處理。如果是帶子中斷的內部中斷 發生後subsrcpnd相應位置1,如果沒有被intsubmsk遮蔽,那 麼srcpnd相應位置1,等待進一步處理 如果是外部中斷 eint0 eint3發生後src...

S3c2440中斷學習

中斷功能在微控制器上一直在用,今天學習在2440上用外部中斷的方式,實現按鍵檢測功能。1.中斷生命週期 中斷源,中斷過濾,中斷處理 1.1 中斷源 2440有60個中斷源。1.2 中斷過濾 有兩個關卡,submask和mask,中斷方式有mode控制。1.3 中斷處理 非向量方式 2440 向量方式...