[家电应用] 延时函数的原理是什么

[复制链接]
4791|80
 楼主| 短句家 发表于 2025-7-26 12:33 | 显示全部楼层 |阅读模式
延时函数通常基于CPU 空循环实现,其原理是通过执行固定数量的指令消耗时间。
实际就会有精度的误差
影响精度的因素
晶振误差:若晶振实际频率偏差 ±5%,延时误差同步放大
指令开销:循环初始化和结束判断的额外指令未计入
编译器优化:不同优化等级(如-O1、-O2)可能改变代码执行时间
实际误差示例
目标延时 100ms → 实际延时可能为 98-103ms(取决于上述因素)

评论

会有不同的延时方式  发表于 2025-12-12 17:38
星辰大海不退缩 发表于 2025-7-28 12:22 | 显示全部楼层
延时函数通常基于CPU 空循环实现,其原理是通过执行固定数量的指令消耗时间
永久冻结 发表于 2025-8-27 12:22 | 显示全部楼层
延时函数通过让程序执行特定操作(如循环空等、调用定时器)消耗 CPU 时间,使程序暂停指定时长后再继续运行,实现时间延迟控制。
桃花落满山前 发表于 2025-10-30 16:29 | 显示全部楼层
延时函数的核心原理是利用单片机的时钟周期或指令执行周期,通过循环执行无实际功能的指令消耗时间。
先根据单片机主频计算单条指令的执行时间。
再通过嵌套循环或定时器计数,累计足够多的指令周期,达到目标延时时长。
软件延时依赖指令执行效率,定时器延时则借助硬件计时,精度更高,适用于对延时准确性要求高的场景
小岛西岸来信 发表于 2025-11-3 11:35 | 显示全部楼层
延时函数原理是通过执行一段固定时长的代码实现等待。主要有两种方式:一是利用 CPU 循环执行空指令,通过预设循环次数控制延时,精度受 CPU 频率影响;二是借助定时器,设置定时时间后让 CPU 进入低功耗状态,定时结束触发中断唤醒,精度更高,适合长延时且不占用 CPU 资源。
樱花树维纳斯 发表于 2025-11-17 15:38 | 显示全部楼层
延时函数原理是让程序暂停执行一段时间。软件实现方式有两种:一是通过循环执行空指令消耗 CPU 时钟周期,根据主频计算循环次数以控制延时时长;二是利用定时器,配置定时时间后让 CPU 休眠,定时结束触发中断唤醒,前者占用 CPU,后者更高效,适用于不同场景。
瞌睡虫本虫 发表于 2025-11-20 12:38 | 显示全部楼层
晶振误差对延时的影响很大,如果晶振频率有偏差,延时误差也会相应变化。
时光贩卖机 发表于 2025-11-21 15:00 | 显示全部楼层
晶振误差对延时的影响很大,如果晶振频率有偏差,那么延时也会相应地不准确。
ldy216 发表于 2025-11-21 20:46 | 显示全部楼层
本帖最后由 ldy216 于 2025-11-21 20:50 编辑

我从不用延时函数,我的程序每个地方是微秒级精度,晶振精度都不影响我的时间精度。做一个项目也就几分钟时间。不服的可以找我

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
我趴在云边 发表于 2025-11-24 16:35 | 显示全部楼层
延时函数的原理是什么,用100字说明
延时函数核心原理是让 MCU 执行无实际业务意义的指令(如空循环、跳转),消耗指定 CPU 时钟周期以实现时间延迟。
其延时时长由指令周期、循环次数决定:先根据 MCU 主频算出单指令执行时间,再通过循环嵌套或定时器计数,控制指令执行总周期,
少女诗篇 发表于 2025-11-26 14:05 | 显示全部楼层
延时函数的核心原理是利用 CPU 执行指令的固定周期,通过让 CPU 重复执行特定指令(或等待硬件计时),消耗预设时间以实现延时。
软件延时靠空指令(如 NOP)、循环语句等,按 MCU 主频校准指令执行次数(例 16MHz 主频单条 NOP 约 0.0625μs);硬件延时通过配置定时器 / 计数器,设定计时周期后等待溢出中断或查询标志位,精准度更高,且不阻塞主程序运行。
桃花落满山前 发表于 2025-11-27 14:45 | 显示全部楼层
延时函数核心原理是利用 CPU 执行指令的耗时实现时间延迟:通过循环执行无实际业务意义的空指令(如 NOP)或简单运算,让 CPU 持续占用一段时间。
延时时间 = 单条指令周期 × 循环执行次数,需结合 MCU 主频、指令集(CISC/RISC)计算循环次数。
分为软件延时(纯代码循环,简单但受主频影响大)和硬件延时(借助定时器中断,精准且不占用 CPU,适配复杂场景)。
桃花落满山前 发表于 2025-11-27 14:45 | 显示全部楼层
延时函数的核心原理是利用 CPU 的指令执行耗时实现时间延迟:软件延时通过循环执行空指令(如 NOP)或简单运算,让 CPU 持续占用,延时 = 单指令周期 × 循环次数,受 MCU 主频影响;硬件延时借助定时器 / 计数器,配置定时周期后 CPU 可执行其他任务,触发中断时完成延时,精准且不占用 CPU 资源,适配不同场景需求。
旧时光放映机 发表于 2025-12-2 09:38 | 显示全部楼层
晶振误差和指令开销都会对延时精度产生影响
linfelix 发表于 2025-12-5 12:23 | 显示全部楼层
指令周期 × 循环次数 = 延时时间
mikewalpole 发表于 2025-12-5 15:22 | 显示全部楼层
利用单片机内置的定时器模块,通过配置计数器溢出时间实现精确延时。
backlugin 发表于 2025-12-6 10:10 | 显示全部楼层
都依赖单片机的时钟体系              
dspmana 发表于 2025-12-6 13:53 | 显示全部楼层
本质是 “时间的可控消耗”。              
sanfuzi 发表于 2025-12-6 19:35 | 显示全部楼层
延时函数的关键在于时间可控性与资源效率之间的权衡。
cemaj 发表于 2025-12-7 09:59 | 显示全部楼层
通过执行空循环或无实际意义的指令来消耗单片机时间。单片机的每条指令执行时间固定,因此循环次数与延时时间成正比。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

764

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
0