我的微 Controller 中有一个看门狗,如果它没有被踢,它将重置处理器。我的应用程序可以正常运行一会儿,但由于没有启动看门狗,因此最终将重置。如果我逐步执行该程序,则效果很好。

有什么方法可以调试呢?

编辑:
结论:
我发现我的错误的方法是看门狗面包屑。

我正在使用具有高和低ISR向量的PIC。假设高矢量处理LED矩阵,而低矢量处理计时器滴答。但是我把两个ISR处理程序都放在了高向量中。因此,当我禁用LED矩阵ISR和计时器滴答ISR需要的服务时,处理器将停留在低ISR中以处理计时器滴答,但计时器滴答处理程序不存在。

面包屑将我的搜索限制在处理led矩阵的功能上,尤其是禁用LED矩阵中断。

最佳答案

添加未初始化的全局变量,该变量在整个代码中设置为不同的值。具体来说,在主要函数调用之前和之后进行设置。

在main的开头放置一个断点。

处理器重置时,全局变量仍将具有它被设置为的最后一个值。继续添加这些“面包屑”以缩小问题范围。

关于embedded - 如何调试看门狗超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/661864/

10-09 03:51