white9336 发表于 2022-11-1 09:03:25

关于程序运行周期,有个概念模糊不清

例如,系统时钟168MHz:程序里面只有个while,那这个程序的运行周期接近是1/168M吗?不太理解时钟对程序运行的影响,求科普,谢谢


ghslfgkkl88 发表于 2022-11-1 09:32:39

1. 理论上来说,时钟频率越高,指令执行速度越快。然后你写的程序,是被编译器翻译成指令的。从这方面来说,时钟频率越高,执行你的程序的速度当然越快;
2. 但是呢,程序是用来实现功能的,功能可能是固定节拍执行的。比如有一个系统任务,用于实现每秒加1的功能。那么你系统时钟168M和系统时钟1680M跑出来的结果基本没有区别,唯一的区别是,168M时切换到每秒加1的任务可能需要3us,而1680M时钟时可能只需要1us;然后168M加1可能需要1us,而1680M加1可能只需要100ns;但你每秒加1的功能都能实现,且你根本区分不出来他们之间的区别;
3. 打个比方,时钟和程序运行的关系,大概像车速与高速路的关系。程序就是高速路,程序写好了,高速路建好了,那么长度就是固定的。这个时候,你频率越高,车速越快,通过高速路的时间当然越短,执行固定程序的时间越短。但是有些路段是限速的,就像上面说的每秒加1的功能,这个时候你能跑再快,也只能乖乖每秒加1,也只能乖乖限速跑100。

eric2013 发表于 2022-11-1 11:26:57

DWT时钟周期计数器可以了解学习下,计数一次就是一个时钟周期,此贴可以玩下,就会有个感性认识了。然后自己还可以使用这个做各种程序的执行时间测量。

DWT实现一个精确微秒延迟的参考例程
https://www.armbbs.cn/forum.php?mod=viewthread&tid=89128
页: [1]
查看完整版本: 关于程序运行周期,有个概念模糊不清