|
如题:怎样在一个函数时,有中断来后跳转到主程序,而不再执行这个函数的剩余部分。
void gate1()
{
time1 = micros();//毫秒
flag = 1;
}
void setup()
{
attachInterrupt(0, gate1, RISING);
Serial.begin(9600);
}
void loop()
{
if (flag == 1) {
music();
flag = 0;
}
}
void music() {
tone(7, 440);
delay(3000);
tone(7, 880);
delay(3000);
}
tone是发音440HZ,880HZ,我的要求是,当有中断时,中止music(),重新执行music()的440HZ。比如music执行了4s,这时在执行880HZ,,来了中断,那么它flag变成了1,它必须再880HZ2s,问题又来了,紧跟着的flag=0使得它不重新执行music,也就是说这次中断无效了。因此有什么方法使这个中断来了,重新且立即执行music的440HZ,
先声明, 有个goto语句,在这里应该行不通,我试了,它只能在一个函数内部跳转,而不能跨函数跳转。
|
|