MSP430F169(四)——浅谈F169看门狗

什么是看门狗

在工业现场,往往会由于供电电源、空间电磁干扰或其他原因引起强烈的干扰噪声。这些干扰作用于数字器件,极易使其产生误动作,从而失去应有的控制功能,引起MSP430发生“程序跑飞”事故。若不进行有效的处理,程序就不能回到正常的状态,从而失去应有的控制功能。看门狗定时器正是为了解放这类问题而产生的,尤其是在具有循环结构的程序任务中更为有效。看门狗有一个RST管脚,用来复位。

看门狗的两种工作模式

(一)看门狗模式:看门狗模式是看门狗这个组件的主要功能,(这不是废话嘛,看门狗组件肯定是看门狗啊)提到看门狗,不得不说这个密码保护了(WDTPW watchdog timer password )任何读写操作必须通过他才能正确执行指令,当密码错误,会产生一个PUC使单片机复位,为什么要这样呢?在早期的时候,有些单片机没有看门狗的密码保护,就很容易被窃取单片机的程序,一些公司以零开发成本就得到了源码,不得不说非常危险。这里给出这个寄存器的图,仅仅给出了高八位
在这里插入图片描述
谈完了密码保护,那肯定得说说看门狗的工作原理。既然说看门狗能复位程序,那这个看门狗复位程序是怎么做到的呢?(这里仅从寄存器配置说明,不涉及硬件)在这里插入图片描述
大家看第五个WDTNMI,这个寄存器默认配置为 0,意思是说看门狗默认配置为复位模式,当用户配置为 1 时,使用NMI 模式,而我们大多时候使用复位功能。没必要配置NMI
在这里插入图片描述
既然是复位,那肯定得发送复位信号到单片机吧,而这个信号就是中断标记。单片机判断有无中断标记来复位。中断标记是怎么产生的?前面已经说了一个,当用户写入密码错了,就会产生一个错误中断标记;另一个就是,到达用户设定的复位时间。比如单片机默认32ms复位一次。而这个时间用户是可以自行配置的。(看门狗模式可以不打开总中断,也没有打开分控位中断一说)
(二)间隔定时器模式:其实这个跟看门狗模式没多大区别,也是产生一个周期性的中断,那区别在哪?主要的不同是看门狗会复位程序,而定时器不会,定时器执行的中断子程序可以由用户配置,看门狗甚至没有中断子程序一说。还有的不同就是中断标记了。定时器需要打开总中断。

给出一个例子供参考

例:使用看门狗定时器功能产生一个方波(周期的取反P1.0)。
#include <msp430x16x.h>
void main(void)
{
	WDTCTL = WDT_MDLY_32; // 以SMCLK进行32ms的延迟
	IE1 |= WDTIE; // 开WDT中断
	P1DIR |= BIT0; // 信号输出
	_EINT(); // 总中断开
	while(1)
	{
		_NOP();
	}
}
// 看门狗中断服务子程序,这里指的是定时器的中断,
//看门狗模式的中断向量不是这个,看门狗有一个系统的自带的复位中断向量。不需要中断子函数
#pragma vector = WDT_VECTOR
__interrupt void WDT_IRQ(void)
{
	P1OUT ^= BIT0; // 对引脚取反
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值