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

看门狗定时器是一个计数器,基本功能是在发生软件问题和程序跑飞后使系统重新启动。看门狗程序正常工作时自动计数,程序流程定期将其复位清零,如果系统在某处卡死或跑飞,该定时器将溢出,并将进入中断,在中断中执行一些复位操作,从而使系统恢复正常的工作状态。
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的时候,无法被冻结

 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值