各位好
我这里开发了一个30K左右的程序,程序运行大概24小时后会跑飞,排除了 BT定时器做的软件RTC 引起的跑飞,由于软件代码量太大,我用了如下的方法。
1.定义了一个 __no_init_ 型的变量temp,2.在每一个子函数中对temp分别赋一个惟一值 3.启动了看门狗4.在main函数开始处判断if(IFG1==WDTIFG){显示屏打印出temp的值,然后while(1);}
我想用以上方法锁定跑飞前执行过的最后一个函数。
但也不知道哪些因素会引起跑飞,以及如何找到跑飞的原因。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
各位好
我这里开发了一个30K左右的程序,程序运行大概24小时后会跑飞,排除了 BT定时器做的软件RTC 引起的跑飞,由于软件代码量太大,我用了如下的方法。
1.定义了一个 __no_init_ 型的变量temp,2.在每一个子函数中对temp分别赋一个惟一值 3.启动了看门狗4.在main函数开始处判断if(IFG1==WDTIFG){显示屏打印出temp的值,然后while(1);}
我想用以上方法锁定跑飞前执行过的最后一个函数。
但也不知道哪些因素会引起跑飞,以及如何找到跑飞的原因。
可以排除硬件上的原因:检测电源,复位电路是否异常
再检测软件方面:是否可能程序堆栈溢出,变量指针是否可能指向非法区,变量开辟区是否及时清空等