看门狗程序

合集下载

如何设计STM32单片机独立看门狗程序?

如何设计STM32单片机独立看门狗程序?

如何设计STM32单片机独立看门狗程序?[导读]今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O 引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。

即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

今天要学习的是独立看门狗,看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位。

即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。

1.1独立看门狗简介看门狗定时器 (WDT,Watch Dog Timer)是单片机的组成部分,它实际上是一个计数器,一般给看门狗一个数值,程序开始运行后看门狗开始倒计时。

如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始计数,也就是所谓的“喂狗”。

如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。

独立看门狗由专用低速时钟(LSI)驱动,计时主时钟发生故障它也仍然有效。

看门狗主要是用于在发生系统软件故障时,将系统复位。

也可以用于将系统从休眠或空闲模式唤醒。

8051单片机看门狗原理C语言演示程序(以STC89C52RC单片机为例包含最简单的程序只有三条)

8051单片机看门狗原理C语言演示程序(以STC89C52RC单片机为例包含最简单的程序只有三条)

***************************************************************************/
#include <Reg52.H>
sfr WDT_CONTR=0xE1;
//定义特殊功能寄存器:STC 单片机看门狗控制寄存器
#define uchar unsigned char
//初始化时两盏灯都熄灭 LED=1; LED_busy=1;
TMOD=0x21; 为串行口波特率发生器
TH0=0x4C; TL0=0x00; IE=0x82; TR0=1;
//定时器 0 工作在方式 1,作为 16 位定时器;定时器 1 工作在方式 2,作
//定时器 0 装初值:每隔 50ms 溢出一次
#define true 1
#define false 0
#define WEIGOU WDT_CONTR=0x34
//看门狗启动设置和“喂狗”操作
sbit LED=P1^6; sbit LED_busy=P1^7;
//信号灯,系统正常工作就一闪一闪的 //工作灯,上电灭一会儿(约 800ms),然后正常工作的时
注解:这里顺便说一下,一般教材上叫“看门狗定时器”,其实定时器原理 还是计数器,只是计的是时钟周期,所以我为了初学者好理解叫统一叫“计数 器”,这里阐明一下。
明白了上面的原理,我们在设计程序时,先根据看门狗计数器的位数和系统 的时钟周期算一下计数器计满数需要的时间,就是说在这个时间内“看门狗”计 数器是丌会装满的,然后在这个时间内告诉它重新开始计数,就是把计数器清零,
由于现在 AT89S52 用的很广泛,所以我先说说 ATMEL 的看门狗;再说说本次试验用的 STC89C52RC 的看 门狗;注意两个不一样!!!

单片机看门狗程序

单片机看门狗程序
tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!
门狗”WDT的功能;此单片机看门狗由51hei独家提供LISTP=18F458INCLUDE”
P18F458.INC”
DEYHEQU0X20DEYLEQUDEYH+1
ORG0X00GOTOMAINORG0X30
;*************初始化子程序*****************INITIALCLRFTRISD;D口
;************单片机看门狗主程序
****************************MAINNOPCALLINITIAL;系统初始化
MOVLW0X00MOVWFPORTD;D口送00H,发光二极管亮
CALLDELAYMOVLW0XFFMOVWFPORTD;D口送FFH,发光二极管灭
LOOPGOTOLOOP;死循环,等待看门狗复位END
/*主程序*/main(){initial();/*初始化,设定看门狗的相关寄存器*/PORTD=
0X00;/*D口送00H,发光二极管亮*/DELAY();/*给予一定时间的延时*/PORTD
=0XFF;/*D口送FFH,发光二极管灭*/while(1){;}/*死循环,等待看门狗溢出
复位*/}
-------------------汇编语言版本的单片机看门狗程序----------------;此程序实现”看
单片机看门狗程序
/*此程序实现单片机”看门狗”WDT的功能*/
#include”p18f458.h”
unsignedlongi;
/*系统初始化子程序*/voidinitial(){TRISD = 0X00;/*D口设为输出*/}
/*延时子程序*/voue;}

看门狗定时器的使用流程

看门狗定时器的使用流程

看门狗定时器的使用流程简介看门狗定时器是一种用于监控系统运行状态的硬件设备。

当系统出现故障或超时的情况下,看门狗定时器会自动重启系统,以确保系统的稳定运行。

本文将介绍看门狗定时器的使用流程,包括初始化、配置、启动和监控等步骤。

初始化初始化是使用看门狗定时器的第一步。

在使用之前,需要确保系统已经正确连接了看门狗定时器,并且加载了相应的驱动程序。

步骤1.打开终端或命令行界面。

2.使用以下命令初始化看门狗定时器:$ watchdog_init3.检查初始化结果,确保看门狗定时器成功初始化。

配置配置是使用看门狗定时器的关键步骤。

通过配置,可以设置看门狗定时器的超时时间和动作。

步骤1.打开终端或命令行界面。

2.使用以下命令配置看门狗定时器的超时时间:$ watchdog_set_timeout 5这里将超时时间设置为5秒,你可以根据需要进行调整。

3. 使用以下命令配置看门狗定时器的重启动作:$ watchdog_set_action restart这里将重启动作设置为自动重启。

启动启动是使用看门狗定时器的关键步骤。

通过启动,可以使看门狗定时器开始监测系统运行状态。

步骤1.打开终端或命令行界面。

2.使用以下命令启动看门狗定时器:$ watchdog_start3.检查启动结果,确保看门狗定时器成功启动。

监控监控是看门狗定时器的主要功能。

通过监控,可以实时检测系统的运行状态,并在系统超时或故障时进行相应的动作。

步骤1.让系统正常运行。

2.看门狗定时器会定时检测系统的运行状态。

3.如果系统在超时时间内未接收到看门狗定时器的喂狗信号,则看门狗定时器会触发动作,例如自动重启系统。

总结通过以上的流程,我们可以使用看门狗定时器来监控系统的运行状态。

首先,我们需要初始化看门狗定时器,并配置超时时间和重启动作。

然后,启动看门狗定时器,并让其监控系统的运行状态。

在系统发生故障或超时的情况下,看门狗定时器会自动触发相应的动作,以确保系统的稳定运行。

STC89系列单片机看门狗的使用及应用程序

STC89系列单片机看门狗的使用及应用程序

STC89 系列单片机看门狗的使用及应用程序
看门狗概念及其应用在由单片机构成的系统中,由于单片机的工作有可能会受到来自外界电磁场的干扰,造成程序的跑飞,从而陷入死循环,程序的正常运行被打断,由单片机控制的系统便无法继续工作,这样会造成整个系统陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watch dog)。

加入看门狗电路的目的是使单片机可以在无人状态下实现连续工作,其工作过程如下:看门狗芯片和单片机的一个I/O 引脚相连,该I/O 引脚通过单
片机的程序控制,使它定时地往看门狗芯片的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,给看门狗引脚送电平的程序便不能被执行到,这时,看门狗电路就会由于得不到单片机送来的信号,便将它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,从而单片机将从程序存储器的起始位置重新开始执行程序,这样便实现了单片机的自动复位。

通常看门狗电路需要一个专门的看门狗芯片连接单片机来实现,这在我们的单片机教程网51hei 以前做过相关的电路介绍。

不过这样会给电路设计带
来复杂,STC 单片机内部自带有看门狗,通过对相应特殊功能寄存器的设置
就可实现看门狗的应用,STC89 系列单片机内部有一个专门的看门狗定时器
寄存器,Watch Dog Timer 寄存器,其相应功能见下个知识点。

单片机汇编语言实现看门狗

单片机汇编语言实现看门狗

CS=0; if(bRegion==0) //write the page addr else WriteByte(cAddress); WriteByte(cData); SCK=0; // CS=1; } uchar ReadEpm(uchar cAddress,bit bRegion) /* 读入一个字节,cAddress 为读入地址,bRegion 为页 */ { uchar cData; while((ReadReg()&0x01)==1);//the device is busy CS=0; if(bRegion==0) else WriteByte(cAddress); cData=ReadByte(); CS=1; return cData; } main() { WriteReg(0x00);//set the watchdog time as 1.4s CS=1; CS=0; } //reset the watchdog
SCK=0; SCK=1; ucData<<=1; } } uchar ReadReg() { uchar ucData; CS=0; WriteByte(RDSR); ucData=ReadByte(); CS=1; return ucData; } uchar WriteReg(uchar ucData) { uchar ucTemp; ucTemp=ReadReg(); if((ucTemp&0x01)==1) //the device is busy return 0; CS=0; WriteByte(WREN);//when write the WREN, the cs must have a high level CS=1; CS=0; WriteByte(WRSR); WriteByte(ucData); CS=1; return 1; } void WriteEpm(uchar cData,uchar cAddress,bit bRegion) /* 写入一个字节,cData 为写入的数,cAddress 为写入地址,bRegion 为页 */ { while((ReadReg()&0x01)==1); //the device is busy CS=0; WriteByte(WREN); //when write the wren , the cs must have a high level CS=1; //write register //read register

《看门狗2》全主支线任务及收集流程图文攻略

《看门狗2》全主支线任务及收集流程图文攻略

《看门狗2》全主⽀线任务及收集流程图⽂攻略 《看门狗2》继承了前作的优点,同时玩家可⾃由的探索世界,游戏元素更加丰富,但其难度也随之增加,其按键操作、技能树选择、主线⽀线任务、物品收集都是关键点,⼤家初⼊游戏可能会遇到卡关的情况,或者觉得难以上⼿,今天⼩编带来“昨天”分享的《看门狗2》图⽂攻略,包含全任务及物品收集,助⼤家顺利通关。

操作按键指令按键开启地图触摸板(轻按)多媒体播放器触摸板(按住)接受/关闭/追踪触摸板(视情况按住)瞄准L2(按住)情景快速骇⼊L1(轻按)透析⽬标L1(按住)物品栏⽅向上键(按住)取出/收回武器⽅向上键(轻按)部署跳跃者⽅向左键(轻按)切换跳跃着⽅向左键(按住)表情动作栏⽅向下键(按住)使⽤表情动作⽅向下键(轻按)部署四轴飞⾏器⽅向右键(轻按)切换到四轴飞⾏器⽅向右键(按住)切换冲刺状态L3切换到瞄准镜按下L3(瞄准时)开启智能⼿机O P T I O N键(轻按)攀爬/跳跃R2射击R2(瞄准时)使⽤投掷物或是⼤规模骇⼊R1(轻按)瞄准投掷物R1(轻按)互动/进⼊车辆△近⾝搏⽃○找掩护×武器装弹□(轻按)控制遥控装置/监视器□(按住)切换到⽹络⼊侵按下R3多媒体操作R3 主⾓背景介绍 本作的背景设定于美国旧⾦⼭的开放世界,并在旧⾦⼭分为六个不同的区域,市中⼼区、市政区、海岸、奥克兰、马林和硅⾕,每⼀个区域都有着⾃⼰独特的美学设计。

同时,旧⾦⼭也继芝加哥之后,成为下⼀个安装c t O S(C e n t r a lO p e r a t i n g S y s t e m,中央操作系统)监控系统的城市,它连着着居民的⼀切。

游戏主⾓是⼀个名为马可仕·哈洛威(M a r c u s H o l l o w a y)的⿊客。

在孩童时期,升级后的c t O S系统c t O S2.0连接了他的个⼈信息,向他错误地指控了⼀项⾃⼰未曾犯下的罪⾏。

他意识到该系统会给旧⾦⼭的⽆辜平民带来危害,于是决定加⼊⿊客组织D e d S e c,打败c t O S2.0和它的创造者布鲁姆(B l u m e)。

看门狗的工作原理和应用

看门狗的工作原理和应用

看门狗的工作原理和应用简介看门狗是一种常用的硬件监控机制,主要用于确保系统或设备的稳定运行。

本文将介绍看门狗的工作原理和应用。

工作原理看门狗的工作原理基于定时器和复位机制,其具体流程如下:1.启动定时器:看门狗通过启动一个定时器来计时。

2.监控程序:看门狗监控系统或设备中的关键程序,确保其正常运行。

3.定时器复位:监控程序定时重置定时器的计时。

4.定时器溢出:如果定时器计时超过了预定的时间,即定时器溢出。

5.复位信号:定时器溢出后,看门狗发送一个复位信号给系统或设备。

6.设备重启:系统或设备在接收到复位信号后会进行重启操作,重新启动。

应用场景看门狗的应用非常广泛,在许多领域中发挥着重要的作用。

以下列举了几个常见的应用场景:•嵌入式系统:嵌入式系统通常是长时间运行的,看门狗可以确保系统在长时间运行后仍然稳定,避免死机或其他故障。

•服务器:服务器运行的应用程序往往非常复杂,存在各种潜在的问题,看门狗可以监控服务器的关键进程,及时发现异常情况并进行复位。

•工业自动化:在工业自动化过程中,看门狗可以监控各种设备和传感器,实时检测故障,并进行相应的处理,确保生产过程的稳定进行。

•汽车电子:随着汽车电子的普及和发展,看门狗在汽车电子中也有重要的应用,可以监控汽车各个系统的运行情况,确保汽车的安全和稳定。

•无人机:无人机是一种高度自动化的飞行器,看门狗可以监控无人机的各个部件,检测故障并采取相应的措施,确保飞行安全。

优点看门狗的应用有许多优点,包括:•提高系统的稳定性:看门狗可以监控系统的运行状态,及时发现并处理异常情况,保证系统的稳定性和可靠性。

•自动化处理:看门狗可以自动检测和处理故障,减少人工干预的需求,提高系统的自动化程度。

•快速恢复:一旦发生故障,看门狗可以快速进行复位操作,使系统尽快恢复正常运行。

•灵活性:看门狗可以根据实际需求进行定制,灵活适应不同应用场景。

注意事项在使用看门狗的过程中,需要注意以下几点:•设定合适的定时器时间:定时器时间的设置需要根据具体的应用场景来确定,过短的时间可能会导致频繁的复位,过长的时间则可能会延误故障的处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TMS320F2812 Watchdog范例程序FILE: Example_28xWatchdog.c//// TITLE: DSP28 Watchdog interrupt test program.//// ASSUMPTIONS://// This program requires the DSP28 header files. To compile the// program as is, it should reside in the DSP28/examples/watchdog// sub-directory.//// As supplied, this project is configured for "boot to H0" operation.//// DESCRIPTION:// This program exercises the watchdog on the F2812/F2810 parts.//// First the watchdog is connected to the WAKEINT interrupt of the// PIE block. The code is then put into an infinite loop.//// The user can select to feed the watchdog key register or not// by commenting one line of code in the infinite loop.//// If the watchdog key register is fed by the KickDog function// then the WAKEINT interrupt is not taken. If the key register// is not fed by the KickDog function then WAKEINT will be taken.//// Watch Variables:// LoopCount for the number of times through the infinite loop// WakeCount for the number of times through WAKEINT////###########################################################################//// Ver | dd mmm yyyy | Who | Description of changes// =====|=============|======|=============================================== // 0.57| 29 May 2002 | L.H. | Initial Release//###########################################################################// Step 0. Include required header files// DSP28_Device.h: device specific definitions #include statements for// all of the peripheral .h definition files.// DSP28_Example.h is specific for the given example.#include "DSP28_Device.h"// Prototype statements for functions found within this file.interrupt void wakeint_isr(void);// Global variable for this exampleUint32 WakeCount;Uint32 LoopCount;void main(void){// Step 1. Initialize System Control registers, PLL, WatchDog, Clocks to default state: // For this example, this function is found in Example_WatchdogSysCtrl.cInitSysCtrl();// Step 2. Select GPIO for the device or for the specific application: // This function is found in the DSP28_Gpio.c file.// InitGpio(); // Not required for this example// Step 3. Initialize PIE vector table:// The PIE vector table is initialized with pointers to shell Interrupt // Service Routines (ISR). The shell routines are found in DSP28_DefaultIsr.c.// Insert user specific ISR code in the appropriate shell ISR routine in // the DSP28_DefaultIsr.c file.// Disable and clear all CPU interrupts:DINT;IER = 0x0000;IFR = 0x0000;// Initialize Pie Control Registers To Default State:// This function is found in the DSP28_PieCtrl.c file.InitPieCtrl();// Initialize the PIE Vector Table To a Known State:// This function is found in DSP28_PieVect.c.// This function populates the PIE vector table with pointers// to the shell ISR functions found in DSP28_DefaultIsr.c.InitPieVectTable();// Step 4. Initialize all the Device Peripherals to a known state:// This function is found in DSP28_InitPeripherals.c// InitPeripherals(); // Not required for this example.// Step 5. User specific functions, Reassign vectors (optional), Enable Interrupts:// Reassign the PIE vector for WAKEINT to point to a different ISR then// the shell routine found in DSP28_DefaultIsr.c.// This is done if the user does not want to use the shell ISR routine// but instead wants to use their own ISR. This step is optional:EALLOW; // This is needed to write to EALLOW protected registersPieVectTable.WAKEINT = &wakeint_isr;EDIS; // This is needed to disable write to EALLOW protected registers// Include application specific functions. This is for this example:// Enable INT1 which is connected to WAKEINT:IER |= M_INT1;// Enable WAKEINT in the PIE: Group 1 interrupt 8PieCtrlRegs.PIEIER1.bit.INTx8 = 1;// Connect the watchdog to the WAKEINT interrupt of the PIE// Write to the whole SCSR register to avoid clearing WDOVERRIDE bitEALLOW;SysCtrlRegs.SCSR.all = BIT1; //#define BIT1 0x0002该位为1时,看门狗输出复位信号无效,看门狗中断输出信号有效;若为0,则输出复位信号有效,中断输出信号无效。

EDIS;// Clear the countersWakeCount = 0; // Count interruptsLoopCount = 0; // Count times through idle loop// Enable global Interrupts and higher priority real-time debug events:EINT; // Enable Global interrupt INTMERTM; // Enable Global realtime interrupt DBGM// Step 6. IDLE loop. Just sit and loop forever (optional):for(;;){LoopCount++;// Uncomment(不受约束的) KickDog to just loop here// Comment KickDog to take the WAKEINT instead// KickDog();}// Step 7. Insert all local Interrupt Service Routines (ISRs) and functions here:// If local ISRs are used, reassign vector addresses in vector table as// shown in Step 5interrupt void wakeint_isr(void){WakeCount++;// Acknowledge this interrupt to get more from group 1PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;}//=========================================================================== // No more.//===========================================================================。

相关文档
最新文档