看门狗守时器用来避免程序因供电电源、空间电磁搅扰或其它原因引起的激烈搅扰噪声而跑飞的事端。在许多单片机中都内置了看门狗,看门狗自身是一个守时器,当守时器溢出时即进行体系复位,因而需求在程序中对看门狗守时器进行清零,即常说的喂狗。
由于我用过AVR的单片机,和AVR的比较,MSP430的看门狗要灵敏的多,首要默许看门狗是开着的,因而假如不运用看门狗的话要封闭,指令如下:
WDTCTL = WDTPW + WDTHOLD
假如翻开看门狗则需求在程序中清零,指令如下:
WDTCTL=WDTPW+WDTCNTCL
这仅仅根本的运用,430的看门狗要略微杂乱一些,首要从IAR的头文件中看看界说了几种作业状况:
2.WDT经过SSEL 和IS0 IS1 3位可以确认与8种时钟源相关的时刻(ACLK=32768Hz,SMCLK=1MHz)
SMCLK=1MH(对应8种)
WDT_MDLY_32
WDT_MRST_32
WDT_MDLY_8
WDT_MRST_8
WDT_MDLY_0_5
WDT_MRST_0_5
WDT_MDLY_0_064
WDT_MRST_0_064
ACLK=32768Hz(对应8种)
WDT_ADLY_1000
WDT_ARST_1000
WDT_ADLY_250
WDT_ARST_250
WDT_ADLY_16
WDT_ARST_16
WDT_ADLY_1_9
WDT_ARST_1_9
在头文件中查得:
代码解说:
WDTCTL =WDT_ARST_1000;
在头文件中看到WDT_ARST_1000的界说为:(WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2)
即上一条指令履行的是WDTCTL= WDTPW+WDTCNTCL+WDTSSEL0+WDTIS2。
WDTCTL设置每条指令中必有WDTPW+..由于WDTPW代表写WDTCTL的时分高八位写05Ah,读的时分高八位为069h,不然触发PUC。
WDTCNTCL:看门狗计数器清零.
WDTSSEL0:表明WDTSSEL第0方位1,既0001.
WDTIS2: 表明WDTIS2第2方位1,既0100.
设置的意义看MSP4305438 %&&&&&%文档
下面介绍两个典型运用:
1、在动态数码管显现中的运用,详细代码可以参阅我之前的笔记,部分代码如下:
__interrupt void watchdog_timer(void)
{
}
这个程序首要是将看门狗守时器作为一般守时器运用,1.9ms刚好合适动态扫描距离,在看门狗中止中对数码管进行动态扫描,这样运用相对于开一个守时器来说要有所便利。因而在需求的守时与看门狗守时器的几个时刻相一起可以考虑运用看门狗。
2、一般延时
WDTCTL = WDT_ADLY_1000;
这个程序同样是将看门狗当一般守时器运用,在主程序中读取中止标志位,完成延时作用,上面的程序为什么是延时2S自己剖析。
这儿面举了两个比如,是最近学习的一点小领会,当然仍是不能忘了看门狗的天性作业,在程序较为简略时可以考虑运用看门狗守时器简化规划。别的还有一点觉得比较重要的是尽管头文件中对寄存器都有了很好的界说,可是仍是很有必要对着头文件和寄存器把首要的寄存器看一面,澄清每一种作业形式的运用方法和留意点。
关于软件看门狗 看门狗是相似与硬件维护卡之类.维护硬盘数据的. 是单片机一个复位芯片,在单片机遇到异常情况之下主动复位!~~ 看门狗是用来看家的,作用是维护你家的产业不丢掉, 看门狗实际上是一个计数器,一般给看门狗一个大数,程序开端运转后看门狗开端倒计数。假如程序运转正常,过一段时刻CPU应宣布指令让看门狗复位,重新开端倒计数。假如看门狗减到0就以为程序没有正常作业,强制整个体系复位。 一般是为了程序进入死循环或死机!有的单片机不需外加看门狗电路(P%&&&&&%)。 看门狗守时器对微控制器供给了独立的维护体系.当体系呈现毛病时,在可选的超时周期之后,看门狗将以RESET信号作出呼应.像x25045就可选超时周期为1.4秒,600毫秒,200毫秒三种.当你的程序死机时,x25045就会使单片机复位.
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/259031.html
|