我的微控制器中有一个看门狗,如果它没有踢,将重置处理器.我的应用程序运行良好一段时间,但最终会重置,因为看门狗没有被踢.如果我单步执行该程序,它工作正常.
有什么方法可以调试它?
编辑:结论:我发现我的错误的方式是看门狗面包屑.
我正在使用具有高和低ISR向量的PIC.高矢量用于处理LED矩阵,低矢量用于处理定时器滴答.但我把两个ISR处理程序放在高位向量中.因此,当我禁用LED矩阵ISR并且计时器滴答ISR需要服务时,处理器将陷入低ISR以处理计时器滴答,但计时器滴答处理程序不在那里.
面包屑将我的搜索范围限制在处理led矩阵的功能中,特别是禁用LED矩阵中断.
添加一个未初始化的全局变量,该变量在整个代码中设置为不同的值.具体来说,在主要函数调用之前和之后设置它.
在main的开头放一个断点.
当处理器重置时,全局变量仍然具有它设置的最后一个值.继续添加这些"面包屑"以缩小问题功能.