http://bbs.eeworld.com.cn/thread-365328-1-1.html
先要注意,喂狗动作一定不能在中断或异常服务程序中进行,最好在是main主线程中一处(无操作系统),或一个低优先级的任务中(带操作系统)。
否者看门狗效果基本无效。方法如下:
1. 代码模拟方式 :在某个函数内部执行while(1);不喂狗,可以认为程序跑飞,看是否一会就硬复位了。
2. 野指针方式 :初始化指针变量,给一个不能访问的地址,如存储器空间中没有实际外设或存储器的地址,需要查找手册,比较容易找到。然后读写这个地址。一般会出现数据总线错误而进入异常,程序
跑飞。
3. 指针越界方式 :野指针的变化版,但更容易理解和出现。 在编写代码时,采用数组。读写数组数据时,有意让数组越界,也会导致同样的错误。这个很多童鞋都遇到过的,强力推荐 。
另外,不保证法2和法3的实际效果和理论效果一致。就看导致相应的异常服务程序是否会导致复位,一般不随便改写异常服务代码,它们都是默认做死循环的。跑到这里,程序就可以说是跑飞了。
程序跑飞,还有很多其他的原因和现象,无法全部列举和测试。但导致的结果都是一样的,所以解决的方法也基本都一样。