[N32G45x] 请教软延时的问题

[复制链接]
6068|65
gygp 发表于 2024-5-6 19:20 | 显示全部楼层
可以计算每个循环所花费的时间。由于循环由3个指令组成,每个指令可能需要多个时钟周期,这取决于指令的类型和架构。通常,一个简单的赋值或算术运算可能需要1到几个时钟周期。
averyleigh 发表于 2024-5-6 22:24 | 显示全部楼层
F4系列的单片机,这款单片机内部有一个HSI(高速内部时钟)振荡器,频率为8MHz。这意味着每秒有800万个时钟周期。
zerorobert 发表于 2024-5-7 07:49 | 显示全部楼层
系统时钟源仍然是HSI,并且没有被更改。
juliestephen 发表于 2024-5-7 10:55 | 显示全部楼层
可以做一些大致的估算。假设powerup_delay()函数使用了一个简单的忙等待(busy-wait)循环,循环次数足够多以至于CPU在循环的大部分时间内都在执行循环体内的指令。在这种情况下,我们可以粗略估计延时的时间。
burgessmaggie 发表于 2024-5-7 14:18 | 显示全部楼层
不是每个指令都恰好在一个时钟周期内完成。某些指令可能需要多个时钟周期来执行。
uptown 发表于 2024-5-7 17:27 | 显示全部楼层
实际上,每个指令可能需要多个周期才能执行,特别是涉及内存访问或跳转的指令
febgxu 发表于 2024-5-7 20:39 | 显示全部楼层
指令实际上需要的时钟周期数多于 估计。
belindagraham 发表于 2024-5-8 13:11 | 显示全部楼层
一个简单的while循环,每次循环迭代都会消耗一定数量的时钟周期。
robertesth 发表于 2024-5-8 16:37 | 显示全部楼层
为了实现8秒的延时, 需要执行大约21,333,333个循环。这只是一个粗略的计算,实际的循环次数可能会因具体的指令和架构而有所不同。
chenqianqian 发表于 2024-5-8 20:57 来自手机 | 显示全部楼层
你看一下power_delay函数里面的实现代码
digit0 发表于 2024-5-8 22:05 | 显示全部楼层
并非每条指令都在一个时钟周期内完成,有些指令可能需要多个时钟周期才能执行。
朝生 发表于 2024-5-9 22:24 | 显示全部楼层
指令实际上需要比估计的更多的时钟周期。
V853 发表于 2024-6-3 21:10 | 显示全部楼层
尽管优化选项是“无”,编译器可能仍然在一定程度上优化了代码。
理想阳 发表于 2024-6-4 10:41 | 显示全部楼层
Iar 优化设置为无,这意味着编译器不会优化代码,这可能会影响执行速度。
Pretext 发表于 2024-6-4 20:28 | 显示全部楼层
关于软延时问题,软延时主要是指在软件或程序中的延迟处理。当处理数据或事件时,可能会因为某些原因需要延迟一段时间再执行下一步操作,可以通过编程实现这种延时功能。具体实现方式可能因编程语言和应用场景而异。
芯路例程 发表于 2024-6-8 12:32 | 显示全部楼层
While 循环的主体包含三条指令,每条指令的执行时间取决于特定的处理器结构和时钟周期。
AIsignel 发表于 2024-6-8 16:27 | 显示全部楼层
如果循环体只有一个 nop,那么3个指令代表3个循环,即0,375μs。
埃娃 发表于 2024-6-28 18:15 | 显示全部楼层
是不是时钟还有倍频跟分频啊
suncat0504 发表于 2024-6-29 09:14 | 显示全部楼层
这种软件延迟都不是十分精确的。计算的时候,根据指令周期,乘以循环次数,得到延时数据,
鹿鼎计 发表于 2024-7-1 19:08 | 显示全部楼层
我想知道时钟是否有倍频和分频
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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