码迷,mamicode.com
首页 > 其他好文 > 详细

按键中断

时间:2014-12-22 00:44:26      阅读:286      评论:0      收藏:0      [点我收藏+]

标签:

原理

技术分享技术分享 

/* 按键          对应的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();

        }

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

 

按键中断

标签:

原文地址:http://www.cnblogs.com/liuchengchuxiao/p/4177293.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!