zzplcch 发表于 2011-8-2 09:02:59

开外部中断后,CC2430运行变得很慢,求解释

这是我的 外部中断初始化
//外部中断 入口P0.7
void init_io(void)
{
    P0SEL|=0X80;
    P0DIR&=~0X80;
    P0INP&=~0X80;
                  //io设置
    EA=1;
    P0IE=1;//开 P0口中断
    PICTL|=0X11;
    P0IFG&=~0X80;//清中断标志
}

这是 中断函数

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
   EA=0;   
   if((P0IFG&0x80)>0)         //按键中断
   {
   P0IFG&=~0X80;          //清中断
      //PowerMode(0);
   
   Light=!Light;
   }
   P0IF=0;
   EA=1;
}



请指点一下,这个问题困扰我很长时间了谢谢

xsh2005105326 发表于 2011-8-2 09:04:54

按键无去抖动,会经常进入中断

zzplcch 发表于 2011-8-2 10:30:10

我试过了, 是跑快了但是我的键盘液晶都不能用了呢求解释

xsh2005105326 发表于 2011-8-2 11:00:13

回复【2楼】zzplcch
我试过了, 是跑快了但是我的键盘液晶都不能用了呢求解释
-----------------------------------------------------------------------

按键没有去抖动,频繁进入中断,你其他任务怎么执行?

zzplcch 发表于 2011-8-2 15:47:17

回复【1楼】xsh2005105326 咖啡糖
-----------------------------------------------------------------------

#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
   P0IE=0;                   //关P0中断
   halWait(20);
   if(POWER==0)             //确认是否真的按下   POWER   是P07口
   {
    if((P0IFG&0x80)>0)         //按键中断
    {      
      //PowerMode(0);
      Light=!Light;
    }
   }
   while(!POWER);            //等待按键松开
   P0IE=1;                  //开P0中断
   P0IFG&=~0X80;          //清中断
}

我这样改的但是还是检测不到矩阵键盘 和液晶

superrf 发表于 2011-8-2 16:33:38

中断函数里面 while(!POWER); 不太好吧,一直占用CPU

zzplcch 发表于 2011-8-2 16:57:08

回复【5楼】superrf
----------------------------------------------------------------------
当外部中段按键松开的时候就跳出了啊

packer 发表于 2011-8-2 18:51:05

中断里敢用while,你胆儿真大

SNOOKER 发表于 2011-8-2 20:31:19

回复【7楼】packer
中断里敢用while,你胆儿真大
-----------------------------------------------------------------------

zzplcch 发表于 2011-8-3 08:48:05

回复【7楼】packer
-----------------------------------------------------------------------

那你说说 我该怎么调呢
页: [1]
查看完整版本: 开外部中断后,CC2430运行变得很慢,求解释