新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > LPC1114外中斷應(yīng)用

        LPC1114外中斷應(yīng)用

        作者: 時間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
        LPC1114微處理器每一個GPIO都可以中斷,不過在設(shè)計中斷時需要注意,下面就舉例說明:

        /**************************************************************************************
        * global variable
        **************************************************************************************/
        volatile uint8 KeyValue = 0;

        /**************************************************************************************
        * FunctionName : KeyInit()
        * Description : 初始化按鍵
        * EntryParameter : None
        * ReturnValue : None
        **************************************************************************************/
        void KeyInit(void)
        {
        // 設(shè)置為輸入端口
        GPIOSetDir(PORT1, KEY1, 0);
        GPIOSetDir(PORT1, KEY2, 0);
        GPIOSetDir(PORT1, KEY3, 0);
        GPIOSetDir(PORT1, KEY4, 0);
        GPIOSetDir(PORT1, KEY5, 0);
        GPIOSetDir(PORT1, KEY6, 0);

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

        // 設(shè)置為低電平中斷
        GPIOSetInterrupt(PORT1, KEY1, 1, 0, 0);
        GPIOSetInterrupt(PORT1, KEY2, 1, 0, 0);
        GPIOSetInterrupt(PORT1, KEY3, 1, 0, 0);
        GPIOSetInterrupt(PORT1, KEY4, 1, 0, 0);
        GPIOSetInterrupt(PORT1, KEY5, 1, 0, 0);
        GPIOSetInterrupt(PORT1, KEY6, 1, 0, 0);

        // 使能中斷
        GPIOIntEnable(PORT1, KEY1);
        GPIOIntEnable(PORT1, KEY2);
        GPIOIntEnable(PORT1, KEY3);
        GPIOIntEnable(PORT1, KEY4);
        GPIOIntEnable(PORT1, KEY5);
        GPIOIntEnable(PORT1, KEY6);

        NVIC_EnableIRQ(EINT1_IRQn); // 使能PORT1中斷
        }

        /**************************************************************************************
        * FunctionName : PIOINT1_IRQHandler()
        * Description : 中斷服務(wù)函數(shù)
        * EntryParameter : None
        * ReturnValue : None
        **************************************************************************************/
        void PIOINT1_IRQHandler(void)
        {
        uint32 key;

        key = GPIOIntStatus(PORT1, KEY1);
        if (key == 1)
        {
        KeyValue = K1;
        GPIOIntClear(PORT1, KEY1);
        return ;
        }

        key = GPIOIntStatus(PORT1, KEY2);
        if (key == 1)
        {
        KeyValue = K2;
        GPIOIntClear(PORT1, KEY2);
        return ;
        }

        key = GPIOIntStatus(PORT1, KEY3);
        if (key == 1)
        {
        KeyValue = K3;
        GPIOIntClear(PORT1, KEY3);
        return ;
        }

        key = GPIOIntStatus(PORT1, KEY4);
        if (key == 1)
        {
        KeyValue = K4;
        GPIOIntClear(PORT1, KEY4);
        return ;
        }

        key = GPIOIntStatus(PORT1, KEY5);
        if (key == 1)
        {
        KeyValue = K5;
        GPIOIntClear(PORT1, KEY5);
        return ;
        }

        key = GPIOIntStatus(PORT1, KEY6);
        if (key == 1)
        {
        KeyValue = K6;
        GPIOIntClear(PORT1, KEY6);
        return ;
        }
        }

        /**************************************************************************************
        * End Of File
        **************************************************************************************/

        在中斷函數(shù)中需要注意的是,如果直接使用如下格式,將無法讀取端口中斷狀態(tài)。

        if (GPIOIntStatus(PORT1, KEY6) == 1)
        {
        KeyValue = K6;
        GPIOIntClear(PORT1, KEY6);
        return ;
        }



        需要先定義一個臨時變量,讀取端口狀態(tài),再通過變量值進(jìn)行判斷,此問題已經(jīng)記過驗證。



        關(guān)鍵詞: LPC1114外中

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 金川县| 永修县| 邵东县| 马公市| 桦南县| 金塔县| 修水县| 家居| 荆门市| 武乡县| 衢州市| 石阡县| 渭南市| 本溪| 墨玉县| 玛沁县| 莫力| 仪陇县| 吉水县| 文安县| 镶黄旗| 嘉善县| 中宁县| 博兴县| 兴和县| 德江县| 政和县| 昌图县| 潼南县| 图们市| 托克逊县| 张北县| 永兴县| 伽师县| 和林格尔县| 商都县| 建瓯市| 田东县| 乐至县| 赫章县| 雅安市|