看门狗定时器在DA14580 中的用法

来源:互联网 发布:强袭魔女 知乎 编辑:程序博客网 时间:2024/06/05 02:17
看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗程序正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断,在中断中执行一些复位操作,从而使系统恢复正常的工作状态。
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的时候,无法被冻结

 
1 0
原创粉丝点击