新手扎到,问个关于mills()函数的问题,求各路大神解答-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9992|回复: 7

新手扎到,问个关于mills()函数的问题,求各路大神解答

[复制链接]
发表于 2013-7-20 02:08 | 显示全部楼层 |阅读模式
我知道mills()函数功能是获取系统运行的时间长度,单位ms。最大为9小时22分,如果超出时间将从0开始。函数的返回值为unsigned long型。但是我的问题是这个函数我自从用了以后,假如不到9小时22分,比如半个小时,我就想终止,或者reset这个函数,让它清零,可以吗?有任何方法吗?求大神求解答
发表于 2013-7-20 02:36 | 显示全部楼层
在setup()里:
time = mills();

在loop()里
if(mills() - time > 60000){ //这里是60s
    //代码
}


不知道可不可以帮上楼主
 楼主| 发表于 2013-7-20 03:12 | 显示全部楼层
疯子。 发表于 2013-7-20 02:36
在setup()里:
time = mills();

先谢谢您的回复~~我理解您代码的意思,但是你得if条件貌似写的有点问题,因为mills() - time一直等于零吧?在这里应该给另一个变量我感觉,比如timeInitial = 0;然后再if里条件是(time - timeInitial > 60000)。

这个我也是想到的,但是现在我的问题是我现在用mills()这个函数计数到60000了,也就是60S,那么我现在可不可以让这个mills()停止计时?或者reset这个函数mills(),从而清零里边的60000
发表于 2013-7-20 12:32 | 显示全部楼层
mills() - time怎么会一直等于0呢?
发表于 2013-7-20 12:41 | 显示全部楼层
mills() - time怎么会一直等于0呢?

time是初始时间,也就是0
millis()是运行的时间,减去time是一直增大的
计时到60s之后,重新赋值一次time就行



给你一份我刚刚编译通过的代码
[mw_shl_code=c,true]int starttime;
int timeInitial = 10000; //这里是10s

void setup() {
  Serial.begin(9600);
  starttime = millis();
}

// the loop routine runs over and over again forever:
void loop() {
  if(millis() - starttime > timeInitial){
    Serial.println("Time Up");
    starttime = millis();
  }
}
[/mw_shl_code]

 楼主| 发表于 2013-7-20 23:15 | 显示全部楼层
疯子。 发表于 2013-7-20 12:41
mills() - time怎么会一直等于0呢?

time是初始时间,也就是0

嗯,确实是,看来还是我对mills()这个函数理解不太透彻,我的那些问题你知道咋回事吗?就是mills()这个函数能stop或者reset吗?
现在我做的这个东西这块我倒是解决了,我改用MsTimer2了,也挺好用的,但是我还是想知道mills()这个函数的一些原理~~~再次谢谢你喽~~~~
PS:关于Xbee模块,你了解吗?
发表于 2013-7-21 00:39 | 显示全部楼层
Nevermore 发表于 2013-7-20 23:15
嗯,确实是,看来还是我对mills()这个函数理解不太透彻,我的那些问题你知道咋回事吗?就是mills()这个函 ...

mills()这个函数能stop或者reset吗?
这个好像不行


关于Xbee模块,你了解吗?
这个没了解过。。
 楼主| 发表于 2013-7-21 00:43 | 显示全部楼层
疯子。 发表于 2013-7-21 00:39
mills()这个函数能stop或者reset吗?
这个好像不行

呵呵,谢谢了~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-12-29 07:07 , Processed in 0.076680 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表