zigbee学习之路(十一):看门狗

一.前言

今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来。

二.原理与分析

在CPU 可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法。当软件在选定时间间隔内不能清除WDT 时,WDT 必须就复位系统。看门狗可用于受到电气噪音、电源故障、静电放电等影响的应用,或需要高可靠性的环境。如果一个应用不需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于在选定的时间间隔产生中断。这也是我们学习看门狗的作用,我们首先要配置WDT寄存器,WDT寄存器如下:

这次实验选用的是看门狗模式,时间间隔1秒检测一次,清除位也要配置,相当于喂狗。

三.程序

#include <ioCC2530.h>

#define uint unsigned int

#define uchar unsigned char

#define LED1  P1_0    //P1_0连接LED1

#define LED2  P1_1    //P1_1连接LED2

#define LED3  P1_4    //P1_4连接LED3

//函数声明 void LED_IO_Init(void); void Watchdog_Init(void); void FeetDog(void); void Delayms(uint xms);

/*********************  函 数 名  : main  功能描述  : WatchDog测试(通过注释掉“喂狗函数”来观察实验现象)  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE ****************/

void main(void)

{

LED_IO_Init();  //LED IO初始化

Watchdog_Init();  //看门狗初始化

while(1)

{

LED1=~LED1;

Delayms(1000);            //通过注释测试,可以看到LCD1以少于1s的时间间隔闪烁,说明系统在不停地复位 //

FeetDog();       // 防止程序跑飞

} }

/***************  函 数 名  : LED_IO_Init  功能描述  : LED_IO初始化函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *********/

void LED_IO_Init(void)

{

P1DIR=0xff;

LED1=0;        //点亮LED1

LED2=0;        //点亮LED2,指示作用

LED3=1;        //点亮LED3,指示作用

}

/************************  函 数 名  : Watchdog_Init  功能描述  : 看门狗初始化函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *************************/

void Watchdog_Init(void)

{

WDCTL = 0x00;  //这是必须的,打开IDLE才能设置看门狗

WDCTL |= 0x08; //时间间隔一秒,看门狗模式

}

/************************  函 数 名  : FeetDog  功能描述  : 喂狗函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE ************************/

void FeetDog(void) {     WDCTL = 0xa0;     WDCTL = 0x50; }

/***************************  函 数 名  : Delayms  功能描述  : 毫秒延时  输入参数  : xms:延时时间,如 i=xms 即延时i/2毫秒  输出参数  : none  返 回 值  : none ***********************/

void Delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=587;j>0;j--);

}

四.总结

通过上面这个程序,我们可以看出,主程序里一直在执行FeetDog()这个函数,也就是说一直在喂狗,使看门狗不进行复位,如果没有喂狗这个函数,看门狗就要咬人了,也就是让程序不断的复位,从头开始执行,看门狗在实际项目应用中,还是很常见的,希望大家多多理解。

时间: 2024-10-26 16:13:16

zigbee学习之路(十一):看门狗的相关文章

我的ZigBee学习之路

每个人总要有自己的一技之长,来体现自己的价值.每个都应该培养自己的以及之长,来实现自己的价值.这个世界是残酷的,同时也是公平的,“天道酬勤”,相信付出总会有所回报.时间,是个神奇的东西,它带走了一切,同时也带来了一切.它是我们生命中唯一可以把握的事物.假如我们能够活到90岁,每年365天,每天24小时,我们总共会有8760个小时,525600分钟.我们每个月有672小时,每周有168小时,在这168个小时里,人与人之间的差异是巨大的,说到底,点滴的积累成就了那个伟大的自己. 下面就来回顾一下自己

zigbee学习之路(一):zigbee介绍

一.前言 大家好,我是一名在校的大学生,最近对zigbee非常感兴趣,于是自己从网上买了一款秉火cc2530的zigbee开发板,想通过这个平台来和大家分享自己学习和研究的经历,下面就来简单的介绍下zigbee 二.zigbee定义 ZigBee是基于IEEE802.15.4标准的低功耗局域网协议.根据国际标准规定,ZigBee技术是一种短距离.低功耗的无线通信技术.这一名称(又称紫蜂协议)来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和"嗡嗡"(zig)地抖动翅膀的"舞蹈&

zigbee学习之路(十五):基于协议栈的按键实验

一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BUT1 按下,LED1 闪烁两次. 三.代码讲解 大家还记得,前面做过的按键实验是怎么配置的吗,其实基于zigbee的协议栈原理是差不多的,我们要对按键的接口和状态是差不多,TI已经为我们建立了专用的按键配置的代码文件,我们只要在此基础上修改就行了.先打开hel_key.c进行修改,下面是代码 #de

zigbee学习之路(二):点亮LED

一.前言 今天,我来教大家如何点亮led,这也是学习开发板最基础的步骤了. 二.原理分析 cc2530芯片跟虽然是51的内核,但是它跟51单片机还是有区别的,51单片机不需要对IO口进行配置,而cc2530芯片却需要对IO口进行配置,才能对它进行赋值,需要配置的寄存器有PXSEL,PXDIR,PXINP,x可以代表任意IO口,如P1SEL. 下面介绍PXSEL的功能: 下面介绍PXDIR的功能: 下面介绍PXINP的功能: 通过配置以上寄存器的,就可以控制IO口德输入输出状态,是否做为普通IO口

Linux嵌入式驱动学习之路(十一)按键驱动

轮询方式: 和led驱动不同的是在配置IO引脚的时候,把LED的输出引脚换成输入,在read函数中向外发送io的状态.必须由应用程序不断的来查询当前IO口的状态来判断. 中断方式: sd

Java学习之路(十一):IO流&lt;前戏&gt;

File类的概述和构造方法 构造方法: File(String pathname):根据一个路径得到File对象 File(String parent,String child):根据一个目录和一个子文件/目录 得到File对象 File(File parent,String child):根据一个父File对象和一个子文件/目录得到File对象 File更应该叫做一个路径,文件 路径  或者  文件夹  路径 File是指文件或者目录路径名的抽象表示形式 创建功能: public boolea

[ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG

引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个数字,程序开始运行后看门狗开始倒计数.如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数.如果看门狗减到0就认为程序没有正常工作,强制整个系统复位.因此可以用看门狗防止程序在跑飞的时候回不到正常模式. 看门狗可用于受到电气噪音.

学习之路四十一丶简论重构

四月份的最后一天,写点心得,记录一下. 这个月一直忙着开发一个基于Win32 API的程序,大量运用了句柄等很多API的知识. 尤其随着代码量越来越大,逻辑越来越复杂,代码的清晰,健壮,扩展性成了一个需要重视的问题,也就是要适时的重构了. 一丶重构的时机 上个星期在修改一块重大逻辑的时候,需要修改很多代码,当时我犯了一个错误,一开始想了一个思路,但一上来没写多少就开始想着重构代码,目的是使其代码清晰以及可扩展. 可是随着时间的流失,不仅没有重构好,而且该改的逻辑也没有改好,我很郁闷,为什么会这样

CC2541蓝牙学习——看门狗

看门狗是在软件跑飞的情况下CPU自恢复的一个方式,看门狗分为硬狗和软狗,硬狗就是由专门的看门狗硬件电路实现看门狗功能,看门狗芯片也比较多,比如DS1232,除了看门狗功能外还有电源电压监测功能.软狗就是由软件实现的看门狗功能,现在很多CPU都自带了软狗,很难说硬狗好还是软狗好,如果软狗够用,尽量使用软狗简化设计,看门狗说白了就是一个定时器!,当软件在选定的时间间隔内不能置位看门狗定时器(WDT),WDT就复位系统.看门狗可用于电噪声,电源故障或静电放电等恶劣工作环境或高可靠性要求的环境.如果系统