Arduino millis() - millis() 怎么能等于 0 以外的任何值?

How can Arduino millis() - millis() equal anything other than 0?

所以我知道 millis() returns 自程序启动以来经过的时间 运行ning,对吗?

现在我 运行 遇到这样的情况,其中 millis() 用于延迟,如下所示:

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

millis() - dly的值怎么会大于0呢? 如果重点是无限期屈服,为什么有人会使用这样的延迟?

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

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

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

示例:

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

基本上代码等待 250 毫秒。每次 while 循环运行时它都会 return 当前毫秒,你的假设是它会 return 旧值。