zoukankan      html  css  js  c++  java
  • 按键中断

    原理

     

    /* 按键          对应的IO寄存器     对应的中断引脚*/

    /* K1             GPG0                 EINT8      */

    /* K2             GPG3                 EINT11     */

    /* K3             GPG5                 EINT13     */

    /* K4             GPG6                 EINT14     */

    /* K5             GPG7                 EINT15     */

    /* K6             GPG11                EINT19     */ 

    void key_init()

    {
        rGPGCON &= ~(0x3 << 0);    //设置GPGO—EINT[8]            //中断来源
        rGPGCON |= (0x2 << 0);     //设置GPGO—EINT[8]
        rEXTINT1 &= ~(0xf << 0);   //触发方式为低电平有效           
        rEINTPEND |= (1 << 8);     //清中断
        rEINTMASK &= ~(1 << 8);    //允许外部中断                 //手动解除屏蔽
        pISR_EINT8_23 = (U32)Key_handler;  //中断服务程序         //低电平触发、中断信号来了            //此时已自动挂起PEND
        EnableIrq(BIT_EINT8_23);   //允许中断(INTMSK)            //手动解除屏蔽
    }

    static void __irq key_handler()
    {
        if (rINTPND == BIT_EINT8_23)     //INTPND同时只能有一位为1     //判断在众多等待的中断里,是不是自己被执行了
            ClearPending(BIT_EINT8_23);  //清SRCPND、INTPND          #define BIT_EINT8_23 (0x1 << 5)
        if (rEINTPEND & (1 << 8))        //清外部中断EINTPEND
           { rEINTPEND |= 1 << 8;         //以上为清除所有PEND, 手动解除挂起状态,否则CPU一直认为此中断还在挂起,没被执行

            led_run();

            }

            ............
    }

  • 相关阅读:
    python join的用法
    python json中的 dumps loads函数
    ubuntu 初始配置
    如何为ubuntu配置java环境
    Ubuntu系统如何安装软件
    取模与取余
    基本数据类型
    js面试题——作用域和闭包
    js面试题-原型和原型链
    js面试题-变量类型和计算
  • 原文地址:https://www.cnblogs.com/liuchengchuxiao/p/4177293.html
Copyright © 2011-2022 走看看