Arduino millis()-millis()如何等于0以外的其他值?

时间:2020-07-05 00:47:09

标签: c++ arduino arduino-ide arduino-esp8266 arduino-c++

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

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

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

millis() - dly的值如何大于0? 如果要无限期地屈服,为什么有人会使用这样的延迟?

1 个答案:

答案 0 :(得分:5)

我不是ardunio编码员,但请看一下代码:

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

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

示例:

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

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