无法更新看门狗?

4个帖子/ 0新
最后一篇文章
Mark.Bloechl.
离线
最后一次露面:1年7个月前
加入:2015-12-09 16:33
无法更新看门狗?

我正在运行两个任务,一个任务正在更新看门狗,另一个任务正在执行应用程序逻辑。当我在应用程序逻辑中输入do - while循环时,应用程序崩溃,当我使循环条件下的循环条件为false时,它将只能执行一次;应用程序不会崩溃。我假设我因看门狗而崩溃,但我不是100%肯定。试图阻止应用程序在循环中崩溃,我叫WDG_Reload(0xFE);无论如何都没有效果并崩溃。然后我试图冻结看门狗并在循环后恢复它,这也没有效果并无论如何崩溃。虽然当我删除do循环时,应用程序运行正常,但在那里循环逻辑会更好地工作。我也试图禁用看门狗全部,我看到的是应用程序永远不会崩溃,但似乎并没有像我的期望那样执行,虽然这可能是其他因素。

这是看门狗崩溃的症状吗?如果即使我更新或冻结它,为什么它是看门狗?

设备:
mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨mark.bloechl,

嗨mark.bloechl,

看门狗应该像应该一样更新和冻结,我想别的东西导致了这个,或者它是看门狗并粘在其他地方,你应该确保由于看门狗超时而崩溃。因此,您必须确保您的应用程序摊位因看门狗,当应用程序“崩溃”设备应堆叠在NMI_Handler中时,您是否看到您的设备击中该处理程序?如果您这样做,您可以从PC检查并准确检查看门狗触发的位置。

谢谢mt_dialog.

Mark.Bloechl.
离线
最后一次露面:1年7个月前
加入:2015-12-09 16:33
我已经测试了代码看

我已经测试了代码,看看它是否会在nmi_handler中崩溃,它确实如此。因此,当我添加了循环功能时,它在nmi_handler中突破,当我删除了它永远不会在nhi_handler中删除的循环功能时。

我相信此测试证明存在看门狗相关的崩溃,并专门从循环功能调用它。

mt_dialog.
离线
最后一次露面:3个月1周前
职员
加入:2015-06-08 11:34
嗨mark.bloechl,

嗨mark.bloechl,

由于当您将循环放置时发生NMI,因此在该循环中有某种东西会延迟代码超过2.6秒(因为您正在使用0xFE值更新看门狗)或该循环影响您的代码,并且NMI发生在其他某一点(按照方法提及并检查PC在NMI发生之前的情况下)。我想,即使您更新监视程序停止时,如果该指令位于该循环中,则循环仅执行一次。

您可以对看门狗和NMI进行小测试只是为了熟悉,使用一段时间(1);并将其放置在Project示例中的某处从SDK(例如,当您编写特征时)。当您编写特定特性时,代码应该到达NMI。然后更换(1);有一段时间(1){WDG_RELOAD(VALUE)},不应该强制NMI执行,但它只会在该点中停止您的代码(更新看门狗值)。

谢谢mt_dialog.