极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16752|回复: 5

为什么millis()计时到30000多就不正常了

[复制链接]
发表于 2013-10-17 19:04:54 | 显示全部楼层 |阅读模式
-。-今天搞定了nRF24L01的双向通信,但发现了点小问题。
我主机通过串口每500ms显示一次从从机反馈回来的数据,开始20000ms还算正常,但当
mills()计数计到30000多的时候串口显示就开始不正常了,本来是设定500MS显示一次,现在显示的速度明显快了很多。
我多次观察,都是millis()计数到3W的时候出问题。
int i=0;
int time=0;
void setup()
{
  Serial.begin(9600);
  time=millis();
}
void loop()
{
  if(millis()-time>=500)
  {
    Serial.println(i);
    time=millis();
     Serial.println(millis());
  }

}
我写了这个简单的例程发现millis()数到3W多也会出问题-。-
求解。我用的板子是UNO
回复

使用道具 举报

发表于 2013-10-17 19:10:10 | 显示全部楼层
time应该定义成unsigned long
回复 支持 反对

使用道具 举报

发表于 2013-10-17 19:15:26 | 显示全部楼层
time 爆表了 另外为什么不用delay 搞的呢么复杂
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-17 19:22:49 | 显示全部楼层
飞翔的红猪 发表于 2013-10-17 19:10
time应该定义成unsigned long

3Q!一言惊醒梦中人。。-。-
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-17 19:24:33 | 显示全部楼层
ioiomi 发表于 2013-10-17 19:15
time 爆表了 另外为什么不用delay 搞的呢么复杂

其实我在搞无线模块双向通信,主机这边每500毫秒切换一次状态,然后接受数据再返回到串口-。-
今天就被这个问题绊倒了-。-
没想过time的范围,之前搞智能小车的时候time我也是用int型所以惯性思维了
回复 支持 反对

使用道具 举报

发表于 2016-7-13 17:29:56 | 显示全部楼层
可否分享一下你的双向通讯程序?谢啦。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 06:13 , Processed in 0.071481 second(s), 20 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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