在区分架构,编程问题和操作系统方面,使用定时器中断而不是虚拟循环来实现时间延迟有什么好处?任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:2)
一旦设置了硬件定时器,它就会独立于CPU执行的任何代码进行计数。 CPU可以运行另一个任务,服务中断,甚至可以在计时器运行时进入休眠状态以节省电量。然后,当发生定时器中断时,CPU将唤醒和/或切换回等待任务以服务定时器到期。计时器的持续时间不受计时器计数时CPU的影响。
在虚拟循环中,CPU正忙于计数,因此无法切换到另一个任务或进入休眠状态。如果虚拟循环被中断,则周期将增加服务中断所花费的时间。换句话说,在中断服务期间暂停虚拟循环。
虚拟循环的持续时间可能受编译器和/或链接器选项的影响。例如,如果更改编译器优化级别,则虚拟循环的速度可能会发生变化。或者,如果虚拟循环函数位于具有不同数量的等待状态的不同存储器中,则虚拟循环的速度可能会改变。硬件计时器可以免受这些变化的影响。
答案 1 :(得分:1)
虚拟循环要求CPU不断工作(增加计数器,或将阈值与系统计时器进行比较)。
CPU时间不做任何事情,因此命名为Dummy Loop。
在多任务操作系统上,它很糟糕,因为时间可能已经用于做其他事情了。
如果你完成一项任务/没有别的事可做。可以花在低能耗模式上的时间(除了电源友好,它对电池供电的设备非常重要)。
答案 2 :(得分:0)
虚拟循环取决于处理器速度。当您使用定时器中断时,您将处理对事件的更快响应,并且您将提供功耗。