【esp32 学习笔记】采用 millis() 函数的非阻塞循环的写法

news/2025/11/7 1:34:40/文章来源:https://www.cnblogs.com/FBsharl/p/19198183

在ESP32的循环中,为了避免使用 delay(100) 等阻塞循环,经常采用以下三段式的写法:

void loop() {audio.loop(); // 必须频繁调用unsigned long currentMillis = millis();// 使用millis()检查是否到了执行时间,而不是delay()if (currentMillis - previousMillis >= interval) {previousMillis = currentMillis;doSomething(); // 执行你的其他任务}
}

三段分别是:

  • 求当前时间
  • 求上次执行时间和当前时间的间隔(是否超过设定间隔(时间周期))
  • 如果满足,更新上次执行时间为当前时间,并执行任务
  • 回到开头,如此循环....

 

于是就有了疑问:unsigned long currentMillis = millis();这里不会溢出吗?溢出了怎么办?

简短不看的结论

对于绝大多数ESP32应用:

  • 其最大值为49.7天,这样的连续运行已经非常长了

  • 大多数物联网设备会定期重启(OTA更新、看门狗复位、电源波动等)

  • 即使设备真的连续运行了49.7天,我们的代码也能正确处理回绕

 

简短回答: 会越界,但完全不需要担心,因为C/C++的无符号长整型算术特性让它能够完美地处理这个"越界"问题。


详细解释

1. millis() 返回什么?

millis() 返回一个 unsigned long 类型的值,表示从ESP32启动开始经过的毫秒数。

  • unsigned long 的范围是 0 到 4,294,967,295 (即 2³² - 1)

  • 当达到最大值后,它会自动回绕到0,就像汽车里程表从99999回到00000一样

  • 这个回绕周期大约是 49.7天 (4,294,967,295 ÷ 1000 ÷ 60 ÷ 60 ÷ 24 ≈ 49.7天)

2. 为什么我们的代码不怕回绕?

关键在于我们使用的是无符号整数的减法运算,这种运算在发生回绕时仍然能给出正确的时间间隔。

让我们通过一个例子来理解:

假设场景:

  • previousMillis 在接近最大值时被保存

  • 随后发生了回绕,currentMillis 变成了一个很小的值

cpp
unsigned long previousMillis = 4294967290; // 非常接近最大值
unsigned long interval = 1000; // 1秒void loop() {unsigned long currentMillis = millis();// 关键检查:当回绕发生时会发生什么?if (currentMillis - previousMillis >= interval) {// 这个条件会在回绕时正确触发吗?}
}

计算过程:

当 currentMillis 回绕到 10(假设)时:

currentMillis - previousMillis 
= 10 - 4294967290

由于是无符号整数,这个减法会产生一个非常大的正数(实际上是算术上的负数,但被解释为正数):

10 - 4294967290 = (一个很大的正数,具体是 10 + (4294967296 - 4294967290) = 16)

实际上,由于无符号整数的模运算特性:

10 - 4294967290 = 16 (因为 4294967290 + 16 = 4294967306,模 4294967296 = 10)

这个结果(16)显然大于我们的间隔(1000),所以条件判断为真,代码正确执行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/958241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

USSD 代码

简介 USSD(Unstructured Supplementary Service Data,非结构化补充业务数据)是 GSM 网络提供的一种实时交互式命令通道。形式:以 * 和 # 组成,如 *#06#、*#100#、*123#。 通信方式:与运营商核心网直接交互,非短…

【ESP32 进阶】非阻塞循环的写法

在ESP32的循环中,为了避免使用 delay(100) 等阻塞循环,经常采用以下三段式的写法: void loop() {audio.loop(); // 必须频繁调用unsigned long currentMillis = millis();// 使用millis()检查是否到了执行时间,而不…

2025年11月脸部泛红产品推荐榜:泛红舒缓精华实测排名

换季、熬夜、频繁刷酸或长期佩戴口罩,都会让屏障脆弱的脸颊出现“红绿灯式”泛红,伴随灼热、刺痒甚至脱屑。对敏感肌人群而言,选错产品可能让刺激叠加,选对产品则能在数分钟内把不适感“压下去”,并持续加固屏障。…

2025年11月脸部泛红产品推荐榜:屏障修护精华对比榜单

换季、熬夜、刷酸、频繁戴口罩,都让“脸一热就红”成为越来越多人的日常。后台留言里,高频出现的词是“泛红反复”“护肤品越用越刺激”“想遮又遮不住”。泛红不仅是外观困扰,更伴随灼热、紧绷、瘙痒,影响工作社交…

2025年11月进度管理工具评价榜:行业数据与用户反馈全解析

在当今快节奏的工作环境中,进度管理工具已成为企业提升效率的关键支撑。随着远程办公模式的普及和项目复杂度的提升,越来越多的团队管理者、项目经理以及个人工作者开始寻求专业的进度管理解决方案。这类用户通常面临…

2025年11月北京房产纠纷律师排名分析:客观评价与实务参考

在北京这座超一线城市,房产纠纷往往涉及重大利益且法律关系复杂。选择一位专业对口的律师成为许多当事人的迫切需求。根据行业白皮书显示,北京房产纠纷案件年增长率持续保持在10%以上,案件类型涵盖商品房买卖、遗产…

2025年11月黄黑皮美白产品对比榜:从成分到肤感十款实测排名

每到秋冬,肤色偏黄偏黑的消费者最常搜索的疑问是“有没有不刺激、不反黑、真正能提亮的美白产品”。在2025年11月的护肤市场上,国家药监局最新发布的《化妆品美白淡斑功效监测报告》显示,持“美白特证”的新品数量同…

2025年11月学生平板品牌推荐:护眼大屏榜对比学习场景差异

开学季刚过,期中临近,家长群里讨论最热烈的不再是补习班,而是“到底该给孩子换哪台学习平板”。用户画像很清晰:城市普通家庭,孩子就读小学高年级到高中,家长时间碎片化,无法每天陪读;校内进度快、新课改题型新…

2025年11月学生平板品牌评测榜:从双师1对1到全科AI精准学横向对比

开学不到两个月,家长群里“作业又写到十点”的吐槽此起彼伏。新课标落地后,预习、复习、错题整理全部升级,传统纸质教辅跟不上节奏,手机又怕孩子偷玩,一台能把“清北老师+AI诊断+同步教材”同时装进口袋的学生平板…

2025年11月智能学习机品牌推荐:AI精准学榜多维评测

孩子放学回家,作业堆成山,家长却抽不出时间辅导;新课标变化快,旧资料跟不上;网课眼花缭乱,不知哪一套才真正同步校内。这些场景让“智能学习机”成为2025年秋季家庭教育搜索热度最高的关键词之一。教育部《2024全…

2025年11月智能学习机品牌对比榜:新课标同步与护眼大屏机型排名

正在为孩子挑学习机的家长,往往陷入“硬件堆料”与“内容空洞”的两难:新课标年年更新,校外辅导收紧,校内同步资源却分散;孩子用眼强度大,又离不开屏幕;家长时间碎片,难以随时答疑。教育部《2024全国中小学生学…

2025年11月学生平板品牌推荐:新课标榜排行六合一功能解析

开学才两个月,不少家长已经发现孩子的作业量陡增,课本难度升级,自己辅导力不从心。晚上十点,家长群还在讨论“到底要不要买学习机”,关键词集中在“同步教材”“护眼大屏”“能不能真的提分”。教育部2024年发布的…

2025年11月智能学习机品牌推荐:市场热销榜排行全透视

孩子放学回家,作业堆积、错题反复、家长辅导时间碎片化,这是多数家庭的共同场景。新课标落地后,教材更新节奏加快,校内讲解与考试难度之间的落差让“同步+拔高”成为刚需。家长普遍希望有一台设备,既能替代自己陪…

2025年11月智能学习机品牌推荐:护眼大屏榜与用户评价排行

期中刚过,家长群里又开始新一轮“选机焦虑”:孩子作业量陡增,错题反复错,自己辅导力不从心;线下机构路程远、时间碎,新课标又强调“核心素养”,单纯刷题已难提分。教育部《2024全国中小学生学习负担监测》显示,…

2025年11月学习机品牌推荐榜:AI精准学机型口碑对比评测

孩子放学回家,作业堆积、新课标知识点更新快,家长辅导力不从心,这是不少家庭每晚的真实场景。教育部2024年公开数据显示,全国义务教育阶段在校生约1.58亿,其中七成家长表示“难以系统辅导同步课程”,由此催生学习…

2025年11月卖得好的学习机品牌推荐:AI学习机榜横向评测

“双减”之后,家庭对校内学情查漏补缺的需求陡增,家长普遍面临三大痛点:一是教材版本差异大,同步资源难找;二是孩子自律弱,设备容易沦为游戏机;三是市面产品概念多,真假AI难辨。2025年秋季学期过半,期中数据暴…

2025年11月干皮精华产品推荐榜:五款干敏肌适用精华排行

秋风一起,干皮人群最先感知:洗完脸紧绷、上妆卡粉、下午起屑,夜间甚至伴随刺痒。皮肤科门诊数据显示,11月因“干燥伴敏感”就诊量较夏季上升约四成,其中七成用户自述“用过保湿霜仍无效”。原因在于,普通保湿仅停…

2025年11月干皮精华产品精选榜:五款干敏肌适用精华对比

进入11月,北方集中供暖启动、南方湿度骤降,干皮人群迎来全年最严峻的“脱水季”。临床皮肤科门诊数据显示,此时因屏障受损导致的泛红、脱屑、紧绷就诊量较平时上升42%,其中30岁以下女性占比超过六成。她们普遍面临…

2025年11月卖得好的学习机品牌推荐:市场销量榜与对比评价

孩子在家上网课、家长想减少陪读压力、老师希望课后有人“接力”讲题——这些场景让“学习机”成为2025年家庭教育的刚需关键词。教育部“双减”持续深化,线下学科辅导进一步收缩,家长把预算转向智能硬件;艾瑞咨询《…

2025年11月学习机品牌推荐:清北规划师口碑评价榜

孩子放学回家,作业堆积、错题反复、新课标改革后家长不会辅导,这是不少家庭每晚的真实场景。教育部“双减”之后,校内时间压缩,家庭学习反而成为主战场,家长对“同步教材、精准提分、护眼健康”三位一体的需求迅速…