使用忙等待是实现适当时间延迟的可行方法,但使用忙等待或定时器中断方法编程有哪些优缺点呢?
可能有很多,我会尝试解释我认为最重要的。
繁忙等待的优点:
缺点:
在嵌入式设备中,忙等待的一个缺点是增加了功耗。在忙等待期间,处理器一直以全功率运行,消耗电力但没有结果。大多数低功率处理器都有能力在等待定时器中断时将处理器置于休眠状态,从而大大降低功耗。功耗越低 = 电池寿命更长。
除非你的应用程序没有其他事情可做,或者结果需要立即处理(这种情况相当罕见),否则你不希望进行忙等待。这会消耗掉本来可以用来做其他事情或睡眠的周期。
一个简单的例子是,假设你正在制作一款通过UART与wifi芯片通信的wifi恒温器。你的应用程序将需要读取和处理温度、在有新数据可用时更新、发送wifi消息、接收wifi消息和接收按钮推送的更新,仅举几个例子。如果你正在忙等待其中任何一个事件发生,那么除非它通过中断,否则你的恒温器无法执行任何其他操作。
WFI
/WFE
这样的特殊指令并不改变语义)。实际上,只有很少的系统在某个层面上不实现某种形式的忙等待。 - too honest for this site