我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
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.
我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
大哥你好, 我按之前配置的是当看门狗计数器溢出的时候进入看门狗中断,在看门狗中断中写语句来复位系统,因为我通过示波器观察检测板子上的TP2引脚,并没有产生低电平,按照你的意思,是要在看门狗中断中先关闭看门狗中断,使能看门狗复位功能同时,写入非101的值 才可以吗?
就是说 WdRegs.SCSR.all =0;
WdRegs.WDCR.all = 0x0019;
把这两句 写到看门狗中断复位子程序吗? 注意:我是一定要在看门狗中断服务子程序写语句来实现系统复位的大哥!
是的,先关闭看门狗中断,也即配置为产生复位,再写入非法KEY值就能复位。关闭中断不影响当前中断的执行(复位了是否再执行中断本也无所谓),且你只是关闭看门狗复位,并不关闭其它中断,也不关闭PIE。复位后,看门狗恢复为初始状态,你只需要在下一次计数溢出前重新初始化看门狗为中断模式即可。
请确保在main函数的初始化代码里将WD使能,并且配置为中断模式,这样只要进入中断就可以通过软件产生复位了。
如果你需要一定条件下才产生,即之前还是需要多次中断执行,你可以在关闭看门狗中断/使能复位代码之前,加入条件判断。
如果问题解决了,麻烦点击“是”按钮结帖。谢谢!