新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM9外部中斷功能測試

        ARM9外部中斷功能測試

        作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
        * 文件名稱:EINT.c
        * 實現(xiàn)功能:測試外部中斷的操作
        * 作者:jianqi
        * 版本:1.0


        #include"2440addr.h" //包含2440相關(guān)寄存器的設(shè)置
        #include"def.h"
        #define LED1 5
        #define LED2 6
        #define LED3 7
        #define LED4 8

        #define KEY1 1
        #define KEY2 4
        #define KEY3 2
        #define KEY4 0

        #define Bit(x) (1<#define Output(x) (1<<2*x) //將對應(yīng)IO置為輸出
        #define LED_On(x) rGPBDAT=~Bit(x) //點亮對應(yīng)LED

        * 名稱:Key1_ISR
        * 功能:key1控制LED1亮滅
        * 入口參數(shù):無
        * 出口參數(shù):無

        void __irq Key1_ISR(void) //EINT1中斷服務(wù)程序
        {
        int led;
        rSRCPND=rSRCPND|(0x01<<1); //清除中斷標志位
        rINTPND=rINTPND |(0x01<<1); //清除中斷標志位
        led=rGPBDAT&(0x1<if (led==0)
        {
        rGPBDAT=rGPBDAT|(0x1<}
        else
        {
        rGPBDAT=rGPBDAT&~(0x1<}
        }


        * 名稱:Key2_ISR
        * 功能:key2控制LED2亮滅
        * 入口參數(shù):無
        * 出口參數(shù):無

        void __irq Key2_ISR(void) //EINT4中斷服務(wù)程序
        {
        int led;
        rSRCPND=rSRCPND|(0x01<<4); //清除中斷標志位
        rINTPND=rINTPND |(0x01<<4);//清除中斷標志位
        if(rEINTPEND&(1<<4))
        {
        rEINTPEND=rEINTPEND|(0x1<<4); //清除中斷標志位
        led=rGPBDAT&(0x1<if (led ==0)
        {
        rGPBDAT=rGPBDAT|(0x1<}
        else
        {
        rGPBDAT=rGPBDAT&~(0x1<}
        }
        }


        * 名稱:Key3_ISR
        * 功能:key3控制LED3亮滅
        * 入口參數(shù):無
        * 出口參數(shù):無

        void __irq Key3_ISR(void) //EINT2中斷服務(wù)程序
        {
        int led;
        rSRCPND=rSRCPND|(0x01<<2); //清除中斷標志位
        rINTPND=rINTPND |(0x01<<2); //清除中斷標志位
        led=rGPBDAT&(0x1<if (led==0)
        {
        rGPBDAT=rGPBDAT|(0x1<}
        else
        {
        rGPBDAT=rGPBDAT&~(0x1<}
        }


        * 名稱:Key4_ISR
        * 功能:key4控制LED4亮滅
        * 入口參數(shù):無
        * 出口參數(shù):無

        void __irq Key4_ISR(void) //EINT0中斷服務(wù)程序
        {
        int led;
        rSRCPND=rSRCPND|0x1; //清除中斷標志位
        rINTPND=rINTPND |0x1; //清除中斷標志位
        led=rGPBDAT&(0x1<if(led==0)
        {
        rGPBDAT=rGPBDAT|(0x1<}
        else
        {
        rGPBDAT=rGPBDAT&~(0x1<}
        }

        * 名稱:Main
        * 功能:初始化外部中斷相關(guān)寄存器
        * 入口參數(shù):無
        * 出口參數(shù):無

        void Main(void)
        {
        rGPBCON=(1<<2*LED1)|(1<<2*LED2)|(1<<2*LED3)|(1<<2*LED4);//設(shè)置四個LED為輸出
        rGPBDAT=0xffff; //全部熄滅
        rGPFCON=0xaaaa; //0~7外部中斷
        rEXTINT0=0x20222; //下降沿中斷
        rEINTMASK=~(1<<4); //不屏蔽外部中斷0,1,2,4
        rEINTPEND=(1<<4); //0,1,2,4產(chǎn)生中斷
        rSRCPND=0x17; //外部中斷
        rINTPND=0x17; //外部中斷使能
        rINTMOD=0x00; //全部為IRQ中斷
        rINTMSK=~0x17; //不屏蔽外部中斷
        pISR_EINT0=(U32)Key4_ISR;
        pISR_EINT1=(U32)Key1_ISR;
        pISR_EINT2=(U32)Key3_ISR;
        pISR_EINT4_7=(U32)Key2_ISR;

        while(1)
        {
        ;
        }
        }


        關(guān)鍵詞: ARM9外部中斷功能測

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 繁峙县| 北安市| 大石桥市| 曲松县| 旌德县| 桐城市| 长顺县| 嵩明县| 罗平县| 阿克苏市| 牙克石市| 深水埗区| 陈巴尔虎旗| 罗江县| 铜川市| 威远县| 新龙县| 高州市| 惠安县| 抚顺县| 贵南县| 湟中县| 信宜市| 衡水市| 丹棱县| 庆安县| 商洛市| 泰宁县| 浪卡子县| 郎溪县| 台北县| 舟山市| 正阳县| 安新县| 涡阳县| 诸城市| 上高县| 曲阜市| 五华县| 宜州市| 永登县|