请教,为何这段代码运行指定时间后就死机了。
#include <FlexiTimer2.h>void dust()
{
Serial.print("AAA");
}
void setup()
{
Serial.begin(9600);
FlexiTimer2::set(5000 , dust); // 5000ms period
FlexiTimer2::start();}
void loop(){
Serial.println("BBB");
}
请教,以上代码,为何在运行后,5秒时间,就没反应了。串口监视器也不再出数据了,要reset下,又能坚持5s;改这个:FlexiTimer2::set(X , dust);那就只能坚持x秒,之后串口就不出数据,死机。
这个定时函数介绍:http://playground.arduino.cc/Main/FlexiTimer2
说没隔多少秒,调用一次dust函数,为什么会死机呢?
本帖最后由 szpapas 于 2013-11-26 08:06 编辑
#include <FlexiTimer2.h>
void dust()
{
Serial.println("AAA");
}
void setup()
{
Serial.begin(9600);
//FlexiTimer2::set(500 , 1.0/1000, dust); // 5000ms period
FlexiTimer2::set(5000 ,dust); // 5000ms period
FlexiTimer2::start();
}
void loop(){
Serial.println("BBB");
delay(1000);
}
缺少delay(1000), 这样就把Timer 逼死了。
运行结果:
BBB
BBB
BBB
BBB
BBB
AAA
BBB
BBB
BBB
BBB
BBB
AAA
BBB
BBB
BBB
BBB
BBB
加了delay(1000), 只是死机时间延长些,可以验证下,否则第一次就死了,delay(1000), 能坚持久点,后一两分钟死。 总是运行时间不长,一段时间后就死机了。感觉中断会跟串口冲突,引起串口通信失败。又中断的函数就不能用串口吗?那怎么输出数据啊 #include <MsTimer2.h>
void dust()
{
Serial.print("AAA");
}
void setup()
{
Serial.begin(9600);
MsTimer2::set(5000 , dust); // 5000ms period
MsTimer2::start();}
void loop(){
Serial.println("BBB");
delay(1000);
}
我用这个库就能运行
页:
[1]