新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > MCU_S3C2410之中斷控制

        MCU_S3C2410之中斷控制

        作者: 時間:2016-11-11 來源:網絡 收藏
        功能分析

        本文引用地址:http://www.104case.com/article/201611/316924.htm

        支持56個中斷

        寄存器分析

        SRCPND

        INTMOD

        INTMSK

        INTSUBMSK

        EXTINT

        EINTPEND

        INTPND

        代碼分析

        __irq的使用

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

        函數執行完畢,恢復中斷現場,這整個過程不需要用戶重新編寫代碼來完成,由編譯器自動完成。因而這也給不具備中斷嵌套功能的ARM系統帶來

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

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

        中斷函數,否則出錯。



        關鍵詞: MCUS3C2410中斷控

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 瑞丽市| 江陵县| 鹤山市| 田东县| 霞浦县| 肥乡县| 菏泽市| 西乌珠穆沁旗| 鄂尔多斯市| 镇江市| 通化县| 阳谷县| 云阳县| 宜章县| 得荣县| 喜德县| 佛山市| 济源市| 西林县| 泰宁县| 利辛县| 格尔木市| 田阳县| 海门市| 房产| 信阳市| 朔州市| 浦县| 大宁县| 来凤县| 林芝县| 安乡县| 会理县| 隆化县| 洮南市| 曲阜市| 罗江县| 大竹县| 乐昌市| 龙门县| 西乌|