Watchdog timer在datasheet中的定义: 看门狗定时器是一个八位的定时器,通过设置位用于发现由软件跑飞产生的意料不到的执行序列,并且能够产生一个完全系统重启或者一个不可屏蔽的中断。 特点: 8位计时,时钟为10.24ms,最大是2.6s的超时。 不可屏蔽中断或看门狗重启; 可选的自动看门狗重启,如果在不可屏蔽中断中更新看门狗寄存器失败。 不可屏蔽看门狗冻结Cortex-M0调试模块,当Cortex-M0在调试过程中停止。 可屏蔽中断被用户程序冻结,注意,如果系统不是重新开始的等,SysRAM位于0x20000000,看门狗将触发BootROM代码再次执行。 找到寄存器的具体说明:
Write:看门狗定时器重载值,注意所有的15-9位都必须是0才能重载该寄存器。
Read:确切的看门狗定时器值,每10.24ms减少一个
一个NMI或是WDOG重启产生在下述条件下: WATCHDOG_CTRL_REG[NMI_RST] = 0 ,然后是 如果WDOG_VAL=0,则产生NMI中断 如果WDOG_VAL=1F0,则产生WDOG重启,重新加载FF, 如果WATCHDOG_CTRL_REG[NMI_RST] =1 且WDOG_VAL<=0,则WDOG重启,重新加载FF。
看下例子,0xC8是1100 1000,所以是200*10.24ms =2s。
WATCHDOG_CTRL_REG是0,由下图可知,看门狗定时器产生NMI在其值为0时,这时能被软件冻结,当为1的时候,无法被冻结
|