c - 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();” 函数和是的处理器在每个循环中运行这个函数。看门狗定时器如何在这种状态下重置处理器?
注意:
System_Watchdog_Refresh():重置 wdt 定时器
Wdt 不能被禁用
foo() 函数对于这个状态无关紧要
当我删除 "__ASM("wfe");" 处理器不会从 wdt 重置
谢谢...
解决方案
WFE 将处理器设置为待机,直到下一个中断(或事件)。因此,即使您刷新了看门狗,处理器也会在此之后立即进入睡眠状态,并且在没有任何其他事件的情况下,将保持该状态,直到看门狗到期并重置处理器。为了防止这种情况,您需要定期触发中断(例如制造商建议的空计时器)以确保处理器唤醒并恢复执行,从而刷新看门狗。
计时器间隔应该合理地接近但远小于看门狗超时,以确保您获得省电和可靠性的理想组合。
(将我的评论移至答案,因为 OP 说它对他有用。)
推荐阅读
- python - Microsoft SQL Server 不会通过 Python 连接
- javascript - express.js,如果我删除下一个参数,错误处理程序将不起作用
- c# - 如何在泛型类中获取属性和值?
- swift - UILabel 有错误的框架。迅速
- python - anaconda 3 升级后使用 anaconda 2
- oauth-2.0 - RingCentral /token API 响应中缺少 Id_token
- python - PyQt4 - 如何禁用所有热键(本机键盘快捷键)
- react-native - 对未计算文件的本机捆绑 sha-1 做出反应(无法从资产 index.android.bundle 加载脚本)
- python - 使用 scipy 求解非线性方程组的错误
- python - argv 不读取 < 或 > python