TI中文支持网
TI专业的中文技术问题搜集分享网站

求救!!!28335 特定条件触发了看门狗复位!!!

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

Seven Han:

您使能了看门狗,在遇到死循环且没有喂狗的情况下,如果看门狗计数器溢出就会产生复位。

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

jianxing ding:

回复 Seven Han:

谢谢您的回复,但是为什么增加一些代码却不出现呢?可以肯定的是这些代码是不对程序产生实际作用

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

Seven Han:

回复 jianxing ding:

有没有看下寄存器WDCR的WDFLAG位,看下是什么导致的复位。

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

jianxing ding:

回复 Seven Han:

寄存器WDCR的WDFLAG位能指示出什么?比如为0代表什么,为1代表什么

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

Seven Han:

回复 jianxing ding:

http://www.ti.com.cn/cn/lit/ug/sprufb0d/sprufb0d.pdf

0表示的是由XRS或上电复位,1表示看门狗复位。

遇到一个奇怪的事情,在程序的某种特定条件下会触发看门狗复位,更神奇的是,任意的增加几行代码又不不会出现复位!感觉像是哪个地方有溢出。后来直接在会复位的代码上,不删减增加代码,而是只改SysCtrlRegs.WDCR = 0x002D; 改为SysCtrlRegs.WDCR = 0x0068;即把看门狗清除,这样的话就不会出现了!

jianxing ding:

回复 Seven Han:

非常感谢您的回复,我现在可以确定如果不使能看门狗的话,程序会跑死了,但是不会复位,所以从这个情况来看是看门狗复位了。并且中断一直在执行!因为中断有做发PWM波,发现一直在发波,只是主循环死了

赞(0)
未经允许不得转载:TI中文支持网 » 求救!!!28335 特定条件触发了看门狗复位!!!
分享到: 更多 (0)