新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > K60 GPIO外部中斷

        K60 GPIO外部中斷

        作者: 時間:2016-11-21 來源:網絡 收藏
        K60幾乎可以把任意一個GPIO用作外部中斷
        要用外部中斷,就要配置好寄存器,寫好中斷函數
        我這里用A口的19號引腳作為按鍵外部中斷檢測,A口的10號引腳做LED輸出
        void init_gpio()
        {
        gpio_init_struct.GPIO_PTx = PTA; //PORTA
        gpio_init_struct.GPIO_Pins = GPIO_Pin19; //引腳6、7
        gpio_init_struct.GPIO_Dir = DIR_INPUT; //輸入
        gpio_init_struct.GPIO_PinControl = INPUT_PULL_UP|IRQC_FA; //內部上拉|上升沿中斷
        gpio_init_struct.GPIO_Isr = porta_isr; //中斷函數
        LPLD_GPIO_Init(gpio_init_struct);
        //使能中斷
        LPLD_GPIO_EnableIrq(gpio_init_struct);
        gpio_init_struct.GPIO_PTx=PTA;
        gpio_init_struct.GPIO_Pins = GPIO_Pin10;
        gpio_init_struct.GPIO_Dir = DIR_OUTPUT;
        gpio_init_struct.GPIO_Output = OUTPUT_H;
        gpio_init_struct.GPIO_PinControl = IRQC_DIS;
        LPLD_GPIO_Init(gpio_init_struct);
        }
        第五行的gpio_init_struct.GPIO_Isr = porta_isr;是把中斷函數的名字賦給GPIO_Isr,用來存中斷函數的地址指針,然后使能中斷
        中斷函數
        void porta_isr()
        {
        if(LPLD_GPIO_IsPinxExt(PORTA, GPIO_Pin19))
        {
        //去抖
        delay();
        if(PTA19_I==0)
        {
        PTA10_O=0;
        delay();delay();delay();
        delay();delay();delay();
        delay();delay();delay();
        PTA10_O=1;
        }
        }
        }
        這個中斷函數的名字就是給GPIO_Isr的值,GPIO的每一個PIN都有中斷標志位,而LPLD_GPIO_IsPinxExt(PORTx, GPIO_Piny)就是PORTx的Piny端口的中斷標志位。一旦產生中斷,標志位為1,執行中斷函數內容。
        還有提示,這里的中斷函數是要聲明的,和51不一樣,51的是可以不用聲明的



        關鍵詞: K60GPIO外部中

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 扬中市| 涿鹿县| 翁牛特旗| 阳高县| 乌拉特中旗| 维西| 犍为县| 新化县| 广汉市| 锦州市| 安福县| 盐边县| 手游| 三河市| 巴林左旗| 安远县| 天长市| 肥城市| 荆门市| 宁德市| 湛江市| 利辛县| 金寨县| 英超| 平塘县| 东乡县| 灌南县| 察哈| 崇州市| 沭阳县| 安康市| 宜君县| 松溪县| 嘉义县| 临海市| 措美县| 潞城市| 昌图县| 菏泽市| 黑水县| 千阳县|