首页 > 解决方案 > ARM Thumb-2 WFE 指令

问题描述

我正在使用 Cortex M3 ARM 处理器。所以,我有一个这样的主循环;

while(true){

foo();
System_Watchdog_Refresh();
__ASM("wfe");//System wait for event...

}

所以,制造商公司对我这样说;如果您不想从 wdt(看门狗定时器)重置程序,则应每 1 ms 设置一个空定时器 ISR。

我这里有问题,因为我使用了“System_Watchdog_Refresh();” 函数和是的处理器在每个循环中运行这个函数。看门狗定时器如何在这种状态下重置处理器?

注意:

谢谢...

标签: carm

解决方案


WFE 将处理器设置为待机,直到下一个中​​断(或事件)。因此,即使您刷新了看门狗,处理器也会在此之后立即进入睡眠状态,并且在没有任何其他事件的情况下,将保持该状态,直到看门狗到期并重置处理器。为了防止这种情况,您需要定期触发中断(例如制造商建议的空计时器)以确保处理器唤醒并恢复执行,从而刷新看门狗。

计时器间隔应该合理地接近但远小于看门狗超时,以确保您获得省电和可靠性的理想组合。

(将我的评论移至答案,因为 OP 说它对他有用。)


推荐阅读