我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
10#:
请注意,执行以下语句之前需要先关闭看门狗中断,使能看门狗复位功能(Watchdog interrupt enable对应的位为0)。
同时,写入非101的值产生的是软件复位,你是如何判定没有产生系统复位的?建议可以查看XRS复位信号和一些寄存器的初始值确定。
我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
datong fang:
回复 10#:
大哥你好, 我按之前配置的是当看门狗计数器溢出的时候进入看门狗中断,在看门狗中断中写语句来复位系统,因为我通过示波器观察检测板子上的TP2引脚,并没有产生低电平,按照你的意思,是要在看门狗中断中先关闭看门狗中断,使能看门狗复位功能同时,写入非101的值 才可以吗?
就是说 WdRegs.SCSR.all =0;
WdRegs.WDCR.all = 0x0019;
把这两句 写到看门狗中断复位子程序吗? 注意:我是一定要在看门狗中断服务子程序写语句来实现系统复位的大哥!
我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
10#:
回复 datong fang:
是的,先关闭看门狗中断,也即配置为产生复位,再写入非法KEY值就能复位。关闭中断不影响当前中断的执行(复位了是否再执行中断本也无所谓),且你只是关闭看门狗复位,并不关闭其它中断,也不关闭PIE。复位后,看门狗恢复为初始状态,你只需要在下一次计数溢出前重新初始化看门狗为中断模式即可。
我配置的是进入中断的看门狗模式,在中断中再写
EALLOW;
WdRegs.WDCR.bit.WDCHK=0x0018;
EDIS;
即我给WDCHK了一个非101的值,为何还是没有发生系统复位呢
datong fang:
回复 10#:
haha 谢谢 10# 大哥了 貌似是复位了 大大赞!