一、看门狗简介
1、看门狗可用来当定时器计时,也可用来防止程序跑死。主要对应到两种工作模式,定时器模式和看门狗模式。
2、MSP430默认看门狗模式打开,因此一般在程序初始化前,会用到指令“WDTCTL = WDTPW + WDTHOLD”关闭看门狗模式,不然程序会一直超时重启。
3、如果想启用看门狗的定时器功能或看门狗超时复位功能,则需要对看门狗进行重新设置,以下将详细介绍。
二、定时器模式
1、设置成定时器模式时,超时溢出后,会进入看门狗中断函数。这样就可以当定时器用了。
2、注意当设置成定时器模式,计时溢出后,只进入看门狗中断函数,不会软重启MCU。溢出后自动重新计时。
3、设置成定时器模式,可以根据选择的时钟源和分频参数,进行不同时间参数的定时(测试过可以进行1s、8s、60s等参数的定时)。
4、由于看门狗定时器模式定时的时间和选择的时钟源和分频有关,所以只能进行一些典型参数的定时,跟普通的定时器有区别。
上图是库中列出的一些可以直接调用的接口,只定义了几种时间参数接口。其实可以自己对WDTCTL进行配置,得出其他的超时溢出参数,具体可以参照例程修改测试。
三、看门狗模式
1、设置成看门狗模式后,超时溢出后,就不会进入所谓程序里面的看门狗中断函数里,所以要在溢出前用指令进行喂狗,才能不会误复位。
2、喂狗其实就是对WDTCTL重新配置,也可切成关闭或定时器模式。对比上图中对定时器模式和看门狗模式的接口设置,可以看出区别就是定时器模式多了WDTTMSEL。
3、看门狗模式可以设置的超时时间其实与定时器模式差不多,可以参考定时器模式的时钟源和分频参数,进行超时时间设置(比如1s、8s、60s等都可以)。
四、低功耗模式 && 看门狗模式
1、一般设备都需要设置成低功耗待机模式,同时又想开启看门狗防止程序跑死,在这种情况下,就需要注意以下的几点了。
2、低功耗模式不能选择LPM4模式,最理想的方案是推荐选择LPM3模式,因为LPM4模式中时钟源SMCLK和ACLK都是关闭的。
3、待机时如果是进入了LPM3模式,而且程序一开始就设置成了看门狗模式,由于程序执行“__bis_SR_register(LPM3_bits | GIE)”指令后,就会一直循环在这,不会跳到喂狗指令,因此结果就会导致超时重启,这种现象是有方法避免的,方法有两种,详见下文。
4、方法一,可以一开始把看门狗设置成定时器模式,超时溢出进入看门狗中断时退出低功耗模式;在主循环程序一开始设置成看门狗模式,在进入LPM3之前设置成定时器模式。
5、方法二,可以开始一个定时器用于喂狗,但是考虑到低功耗和资源的节约利用,推荐使用第一种方法,即可实现低功耗模式和看门狗模式的冲突问题。