新聞中心

MCU_S3C2410之中斷控制

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
功能分析

本文引用地址:http://m.butianyuan.cn/article/201611/316924.htm

支持56個(gè)中斷

寄存器分析

SRCPND

INTMOD

INTMSK

INTSUBMSK

EXTINT

EINTPEND

INTPND

代碼分析

__irq的使用

__irq為一個(gè)標(biāo)識,用來表示一個(gè)函數(shù)是否為中斷函數(shù)。對于不同的編譯器,__irq在函數(shù)名中的位置不一樣,例如:
ADS編譯器中: void __irq IRQ_Eint0(void);
Keil編譯器中: void IRQ_Eint0(void) __irq;
但是其意義一樣,它所完成的任務(wù)是標(biāo)識該函數(shù)為中斷函數(shù),在編譯器編譯是調(diào)用此函數(shù)時(shí),先保護(hù)函數(shù)入口現(xiàn)場,然后執(zhí)行中斷函數(shù),

函數(shù)執(zhí)行完畢,恢復(fù)中斷現(xiàn)場,這整個(gè)過程不需要用戶重新編寫代碼來完成,由編譯器自動完成。因而這也給不具備中斷嵌套功能的ARM系統(tǒng)帶來

了問題,若使用 __irq 時(shí)有中斷嵌套產(chǎn)生,這現(xiàn)場保護(hù)就會混亂。在前一篇日志“LPC2000系列中斷嵌套處理”中,自己編寫中斷入口現(xiàn)場保護(hù)代

碼,并不使用 __irq 標(biāo)識符號,就是這個(gè)原因。
總結(jié)如下:
1、若不想自己編寫中斷入口現(xiàn)場保護(hù)代碼,而且使用中無中斷嵌套,在中斷函數(shù)中用 __irq 來標(biāo)識我們的中斷函數(shù),否則出錯(cuò);
2、若程序中要使用中斷嵌套,對于無中斷嵌套功能的ARM來說,一定要自己編寫中斷入口現(xiàn)場保護(hù)代碼,而且不能用 __irq 標(biāo)識我們的

中斷函數(shù),否則出錯(cuò)。



關(guān)鍵詞: MCUS3C2410中斷控

評論


技術(shù)專區(qū)

關(guān)閉