发新帖我要提问
12
返回列表
打印
[N32G45x]

请教软延时的问题

[复制链接]
楼主: qeeuly
手机看帖
扫描二维码
随时随地手机跟帖
21
可以计算每个循环所花费的时间。由于循环由3个指令组成,每个指令可能需要多个时钟周期,这取决于指令的类型和架构。通常,一个简单的赋值或算术运算可能需要1到几个时钟周期。

使用特权

评论回复
22
averyleigh| | 2024-5-6 22:24 | 只看该作者
F4系列的单片机,这款单片机内部有一个HSI(高速内部时钟)振荡器,频率为8MHz。这意味着每秒有800万个时钟周期。

使用特权

评论回复
23
zerorobert| | 2024-5-7 07:49 | 只看该作者
系统时钟源仍然是HSI,并且没有被更改。

使用特权

评论回复
24
juliestephen| | 2024-5-7 10:55 | 只看该作者
可以做一些大致的估算。假设powerup_delay()函数使用了一个简单的忙等待(busy-wait)循环,循环次数足够多以至于CPU在循环的大部分时间内都在执行循环体内的指令。在这种情况下,我们可以粗略估计延时的时间。

使用特权

评论回复
25
burgessmaggie| | 2024-5-7 14:18 | 只看该作者
不是每个指令都恰好在一个时钟周期内完成。某些指令可能需要多个时钟周期来执行。

使用特权

评论回复
26
uptown| | 2024-5-7 17:27 | 只看该作者
实际上,每个指令可能需要多个周期才能执行,特别是涉及内存访问或跳转的指令

使用特权

评论回复
27
febgxu| | 2024-5-7 20:39 | 只看该作者
指令实际上需要的时钟周期数多于 估计。

使用特权

评论回复
28
belindagraham| | 2024-5-8 13:11 | 只看该作者
一个简单的while循环,每次循环迭代都会消耗一定数量的时钟周期。

使用特权

评论回复
29
robertesth| | 2024-5-8 16:37 | 只看该作者
为了实现8秒的延时, 需要执行大约21,333,333个循环。这只是一个粗略的计算,实际的循环次数可能会因具体的指令和架构而有所不同。

使用特权

评论回复
30
chenqianqian| | 2024-5-8 20:57 | 只看该作者
你看一下power_delay函数里面的实现代码

使用特权

评论回复
31
digit0| | 2024-5-8 22:05 | 只看该作者
并非每条指令都在一个时钟周期内完成,有些指令可能需要多个时钟周期才能执行。

使用特权

评论回复
32
朝生| | 2024-5-9 22:24 | 只看该作者
指令实际上需要比估计的更多的时钟周期。

使用特权

评论回复
33
V853| | 2024-6-3 21:10 | 只看该作者
尽管优化选项是“无”,编译器可能仍然在一定程度上优化了代码。

使用特权

评论回复
34
理想阳| | 2024-6-4 10:41 | 只看该作者
Iar 优化设置为无,这意味着编译器不会优化代码,这可能会影响执行速度。

使用特权

评论回复
35
Pretext| | 2024-6-4 20:28 | 只看该作者
关于软延时问题,软延时主要是指在软件或程序中的延迟处理。当处理数据或事件时,可能会因为某些原因需要延迟一段时间再执行下一步操作,可以通过编程实现这种延时功能。具体实现方式可能因编程语言和应用场景而异。

使用特权

评论回复
36
芯路例程| | 2024-6-8 12:32 | 只看该作者
While 循环的主体包含三条指令,每条指令的执行时间取决于特定的处理器结构和时钟周期。

使用特权

评论回复
37
AIsignel| | 2024-6-8 16:27 | 只看该作者
如果循环体只有一个 nop,那么3个指令代表3个循环,即0,375μs。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则