单片机世界探秘:06 时间魔法师——定时器与延时 delay()的罪与罚 大会!

张开发
2026/4/12 23:16:19 15 分钟阅读

分享文章

单片机世界探秘:06 时间魔法师——定时器与延时 delay()的罪与罚 大会!
06时间魔法师——定时器与延时 delay()的罪与罚 大会!🌟 茶几上没有焊铁、没有杜邦线、没有烧坏的芯片……却能把单片机玩得飞起!这个系列就是为你准备的“单片机迪士尼乐园”!我们用免费在线仿真神器Wokwi(核心开源,浏览器打开就玩)+ 完全开源离线备选SimulIDE,一步步拆解单片机所有核心功能,最后亲手搭出一个**“多功能单片机学习实验台”**——一个菜单式综合系统,能切换演示GPIO、ADC、PWM、中断、I2C、SPI、定时器、串口、传感器、IoT……全部功能一网打尽!跟着走,学完你就拥有了自己的“虚拟单片机大学”!今天单片机世界进入时间魔法篇章!delay() 就是那个“暂停全宇宙”的罪魁祸首——你一delay(1000),整个程序像中了石化咒,按钮不响应、WiFi断连、串口卡死……而millis() + 非阻塞才是真·时间魔法师!最后还有精准秒表和多任务流水灯两大仿真,让你3秒看懂“为什么老司机从来不用delay”😂准备好变身时间掌控者了吗?一、delay() 的罪与罚(吐槽大会)罪状1:全阻塞!delay(1000) = 程序暂停1秒,什么都不干,连呼吸都暂停。罪状2:不精确(有中断时更乱)。罪状3:无法多任务——想同时闪3个不同频率的灯?做梦!幽默比喻:delay() 就像你玩游戏时突然按下暂停键,结果队友全在骂你挂机……而millis() 是“后台偷偷计时”,你该干嘛干嘛!对比表(一目了然):项目delay()(罪人)millis()(魔法师)是否阻塞是(全宇宙暂停)否(只看时间戳,继续跑loop)多任务能力❌ 只能单线程✅ 同时干10件事精确度一般毫秒级(配合定时器可微秒)适合场景新手教学、简单演示所有真实项目、机器人、智能家居代码长度短(但坑多)稍长(但优雅)二、millis() 正确用法(老司机必背口诀)核心思想:记录“上一次动作的时间戳”,每次loop都问:“现在时间 - 上次时间 = 间隔吗?”黄金代码模板(直接复制,改数字就能用):unsignedlonglastTime=0;// 上次动作时间constunsigned

更多文章