|
|
我的想法是使用外部中断作为程序开始和停止的开关,但是遇到一个问题:
在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
请教大家,这是怎么回事?
|
|