jinga 发表于 2013-11-26 00:47:24

请教,为何这段代码运行指定时间后就死机了。

#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:04:58

本帖最后由 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

jinga 发表于 2013-11-26 14:15:48

加了delay(1000), 只是死机时间延长些,可以验证下,否则第一次就死了,delay(1000), 能坚持久点,后一两分钟死。

jinga 发表于 2013-11-26 14:21:34

总是运行时间不长,一段时间后就死机了。感觉中断会跟串口冲突,引起串口通信失败。又中断的函数就不能用串口吗?那怎么输出数据啊

韩冬 发表于 2013-11-27 18:41:47

#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]
查看完整版本: 请教,为何这段代码运行指定时间后就死机了。