papefer 发表于 2013-10-27 22:15:31

关于LPC1768使用GPIO中断遇到的问题

         本人初学LPC1768现在想使用其GPIO中断功能,写了个这样的小程序:设置p2.10,p2.11为下降沿触发中断,当p2.10处中断触发时value++,p2.11处中断触发时,value--。
p2.10,p2.11是通过按键接地的,value值用数码管显示。以下是我大概程序,不知哪里有问题,就是进不了中断,value值不变。本人菜鸟一个,望大神们指点。


void EINT3_IRQHandler(void)
{
        if(LPC_GPIOINT->IO2IntStatF&(0x01<<10))
        {
                LPC_GPIOINT->IO2IntClr|=(0x01<<10);
                value++;
        }

        if(LPC_GPIOINT->IO2IntStatF&(0x01<<11))
        {
               LPC_GPIOINT->IO2IntClr|=(0x01<<11);
                value--;
        }
}

void GPIOINT_Init(void)
{
      LPC_GPIOINT->IO2IntEnF|=(3<<10);       
}

int main(void)
{
        SystemInit();//系统初始化
        seg_Init();           //数码管初始化
        GPIOINT_Init();
       
        while(1)
        {       
        segdisplay(value);//数码管显示
        }                                          
}

gujingji 发表于 2013-10-30 21:37:06

引脚连接模块P2.10 P2.11有没有连接到GPIO 方向是否设置为输入 然后还有 你没有设置开启EINT3中断,GPIO2和GPIO0共用EINT3中断

papefer 发表于 2013-10-30 22:07:20

gujingji 发表于 2013-10-30 21:37 static/image/common/back.gif
引脚连接模块P2.10 P2.11有没有连接到GPIO 方向是否设置为输入 然后还有 你没有设置开启EINT3中断,GPIO2和 ...

         是没有开启EINT3,开始不知道他俩共用,谢谢!

papefer 发表于 2013-10-30 23:33:22

gujingji 发表于 2013-10-30 21:37 static/image/common/back.gif
引脚连接模块P2.10 P2.11有没有连接到GPIO 方向是否设置为输入 然后还有 你没有设置开启EINT3中断,GPIO2和 ...

       现在GPIO中断能用了,但又遇到问题了:我设定的是按一下按键,value++,但实际上value的值有时不止加1(用外部中断边沿触发也是类似),
即按一下中断执行了好几次,无论我延时还把直接把中断关了都还是一样,请问下这个问题怎么解决,怎样保证按一下,
value的值每次只加1而不会多加?

hqgboy 发表于 2013-10-31 08:19:30

消抖。
低电平中断试试。

gujingji 发表于 2013-11-1 22:58:04

进中断就马上清除中断标志位试试看
页: [1]
查看完整版本: 关于LPC1768使用GPIO中断遇到的问题