求助!奇怪的中断
我的想法是使用外部中断作为程序开始和停止的开关,但是遇到一个问题:在setup里设置了外部中断:attachInterrupt(0, switch_p, FALLING);
中断函数:
void switch_p()
{
state = !state;
if (state == 1)
{
MsTimer2::start();
Serial.println("Program start");
Serial.print("state:");
Serial.println(state);
digitalWrite(13, 1);
delay(500);
digitalWrite(13, 0);
}
else
{
MsTimer2::stop();
count=0;
pic=0;
Serial.println("Program stop");
Serial.print("state:");
Serial.println(state);
digitalWrite(13, 1);
delay(500);
digitalWrite(13, 0);
}
}
按下按钮一次,执行结果输出是这样:
Program start
state:1
Program stop
state:0
Program start
state:1
再次按下按钮,输出:
Program stop
state:0
Program start
state:1
Program stop
state:0
如果中断设置成:attachInterrupt(0, switch_p, RISING);
无论按几次都输出:
Program start
state:1
Program stop
state:0
请教大家,这是怎么回事?
中斷...實在無解 继续求助:Q 尝试下按键消抖呢
另外尝试下在switch_p() 里先deattach掉中断,等代码执行完毕后重新attach上试试呢 你中断使用方法不正确,不应该在任何中断程序里进行任何延时操作,中断程序应该尽量设计的短小精悍,一般中断程序中只标记状态、数据复制等简单操作,然后在main程序里根据状态标记进行数据处理。 pathletboy 发表于 2013-11-9 19:38 static/image/common/back.gif
你中断使用方法不正确,不应该在任何中断程序里进行任何延时操作,中断程序应该尽量设计的短小精悍,一般中 ...
多谢指点,我试试~ 官网里面有解释的 延时串口指令在中断里面不能使用
页:
[1]