首页 > 解决方案 > Arduino millis() - millis() 如何等于 0 以外的任何值?

问题描述

所以我知道millis() 返回程序开始运行以来经过的时间,对吧?

现在我遇到了这样一种情况,即在这样的延迟中使用millis():

long dly = millis();
while (millis() - dly < 250) {
yield();        // enough time to send response
}

值怎么可能millis() - dly大于0?如果关键是无限期地让步,为什么有人会使用这样的延迟?

标签: c++arduinoarduino-idearduino-esp8266arduino-c++

解决方案


我不是ardunio编码器,但看看代码:

long dly = millis();
while (millis() - dly < 250) {
yield();        // enough time to send response
}

在第 1 行,您定义了一个变量,该变量保存从 start 开始经过的时间,然后在 while 循环内检索当前的 millis(),直到它大于 250 毫秒。

例子:

long dly = millis(); => Say millis = 1250,
inside while loop => millis will update itself until its 1500

本质上,代码等待 250 毫秒。每次 while 循环运行时,它都会返回当前的毫秒数,您的假设是它将返回旧值。


推荐阅读