看门狗实验

合集下载

窗口看门狗实验心得体会

窗口看门狗实验心得体会

窗口看门狗实验心得体会作为一种新兴的网络安全方案之一,窗口看门狗近年来备受关注。

作为一名从业人员,为了更好地掌握这项技术,我特地进行了一次窗口看门狗实验,并在此分享一下我的心得体会。

首先,我想简单介绍一下什么是窗口看门狗。

窗口看门狗实际上是一种Windows平台上的安全技术,主要是通过监控系统中的进程和网络通信来检测和预防恶意行为的发生。

简单来说,就是将一只“看门狗”放到了我们的电脑里,时刻“守护”着我们的安全。

那么,具体来说,窗口看门狗是如何实现的呢?其实,窗口看门狗主要通过以下四个方面来进行检测和防护:1. 监控系统中的进程。

窗口看门狗可以监控所有正在运行的进程,并对这些进程的行为进行监测,如进程的创建、关闭等。

如果发现某个进程的行为异常,窗口看门狗会立即进行预警或者阻止其继续运行。

2. 监控系统中的网络通信。

窗口看门狗可以监控所有的网络通信,包括传入和传出的数据包。

如果发现某个数据包包含恶意代码或者连接了不受信任的服务器,窗口看门狗会同样立即进行预警或者阻止其继续传输。

3. 杀毒软件兼容性。

窗口看门狗与杀毒软件相辅相成。

在进行防护的同时,窗口看门狗可以实时监测杀毒软件的状态,防止恶意软件对杀毒软件进行攻击,从而保证我们电脑的安全。

4. 无缝衔接Windows系统。

窗口看门狗的最大优点是它与Windows系统无缝衔接,并且对系统的影响极小。

所以即使我们安装了窗口看门狗,我们也感受不到什么不同,而且它不会影响我们使用电脑的速度。

说了这么多,其实窗口看门狗最最重要的作用还是能够为我们提供实时的安全保障。

在进行实验的过程中,我发现窗口看门狗可以监控系统中所有进程和网络通信,并进行智能的行为分析。

如果它发现有威胁性的行为发生,就会立即进行预警和阻止,从而保证我们电脑的安全。

当然,窗口看门狗也有一些不足之处。

比如,它只能保护我们的电脑防止恶意行为,但它不能修复或者清除已经感染的病毒。

所以,我们还需要配合使用杀毒软件等其他安全工具一起,才能更好地保护我们的电脑。

Arm实验看门狗

Arm实验看门狗

ARM实验姓名唐珊珊学号2011412614实验目的:掌握独立看门狗的工作原理和使用方法。

实验原理:调用固件库设置和初始化独立看门狗,通过Led4的状态指示系统运行,同时按下按键SW1不断重置看门狗寄存器(俗称喂狗),当停止按键后,,则MCU会在看门狗超时的作用下系统重启。

实验步骤:要实现本实验功能设计,需要进行必要的设置,其步骤如下:1)设置Led驱动管教为推挽输出,Sw1管脚为浮空输入。

2)Led4熄灭一下,以表示刚刚复位,3)调用IWDG_writeAccessCmd函数向IWDG_KR写入0X5555。

通过这步,我们取消看门狗寄存器的写保护。

4)设置看门狗的分频系数,本例中为32。

在固件库中,可以调用IWDG_SetPrescaler函数实现。

5)设置看门狗的重装载的值,本例中为625.在固件库中,可以调用IWDG_SetReload函数实现。

6)调用IWDG_Enable函数向IWDG_KR写入0xcccc。

通过这句,来启动STM32的看门狗。

7)检测按键Sw1,如果按下则调用IWDG_ReloadCounter函数使STM32重新加载IWDG_RlR的值到看门狗计数器里面。

也可以用该命令来喂狗。

程序为:独立看门狗#include "stm32f10x.h"void GPIO_Config(void);void delay(void);int main(void){GPIO_Config();GPIO_SetBits(GPIOC,GPIO_Pin_9);delay();GPIO_ResetBits(GPIOC,GPIO_Pin_9);IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_32);IWDG_SetReload(625);IWDG_Enable();while(1){if(GPIO_ReadInputDataBit(GPIOD,GPIO_Pin_3)==0)IWDG_ReloadCounter();}}void delay(void){uint32_t i;for(i=0;i<6000000;i++){}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC,ENA BLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD,&GPIO_InitStructure);}中断函数uint32_t led=1;void WWDG_IRQHandler(void){uint8_t cr;cr=WWDG->CR;cr&=0x7f;if(cr<0x50){WWDG_SetCounter(0x70);WWDG_ClearFlag();led=~led;if(led==0)GPIO_ResetBits(GPIOC,GPIO_Pin_9);elseGPIO_SetBits(GPIOC,GPIO_Pin_9);}}#include "stm32f10x.h"void GPIO_Config(void);void delay(void);//uint32_t led=0;int main(void){NVIC_InitTypeDef NVIC_InitStructure;GPIO_Config();GPIO_ResetBits(GPIOC,GPIO_Pin_9);delay();GPIO_SetBits(GPIOC,GPIO_Pin_9);delay();RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8);WWDG_EnableIT();WWDG_SetWindowValue(0x50);WWDG_Enable(0x70);NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x07; NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x07;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);while(1){;}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);}void delay(void){uint32_t i;for(i=0;i<6000000;i++){}}中断函数为void WWDG_IRQHandler(void){uint8_t cr;cr=WWDG->CR;cr&=0x7f;if(cr<0x50){WWDG_SetCounter(0x70);WWDG_ClearFlag();led=~led;if(led==0)GPIO_ResetBits(GPIOC,GPIO_Pin_9);elseGPIO_SetBits(GPIOC,GPIO_Pin_9);}}一秒定时看门狗#include "stm32f10x.h"void GPIO_Config(void);void NVIC_Config(void);void TIM1_Config(void);void EXTI_Config(void);void IWDG_Config(void);int main(){GPIO_Config();NVIC_Config();TIM1_Config();EXTI_Config();IWDG_Config();while(1){}}void GPIO_Config(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD,ENA BLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOD, &GPIO_InitStructure);}void NVIC_Config(void){NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannel=TIM1_UP_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);NVIC_InitStructure.NVIC_IRQChannel = EXTI3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x07;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x07;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);}void TIM1_Config(){TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);TIM_TimeBaseInitStructure.TIM_ClockDivision=0;TIM_TimeBaseInitStructure.TIM_Period=(10000-1);TIM_TimeBaseInitStructure.TIM_Prescaler=(7200-1);TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;TIM_TimeBaseInit(TIM1,&TIM_TimeBaseInitStructure);TIM_ClearITPendingBit(TIM1,TIM_IT_Update);TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);TIM_Cmd(TIM1,ENABLE);}void EXTI_Config(void){EXTI_InitTypeDef EXTI_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3);EXTI_InitStructure.EXTI_Line = EXTI_Line3;EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStructure);}void IWDG_Config(void){IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(IWDG_Prescaler_32);IWDG_SetReload(4000);IWDG_Enable();}中端函数为int led=1;void TIM1_UP_IRQHandler(void){if(TIM_GetITStatus(TIM1,TIM_IT_Update)!=RESET){IWDG_ReloadCounter();led=~led;if(led==1)GPIO_SetBits(GPIOC,GPIO_Pin_9);elseGPIO_ResetBits(GPIOC,GPIO_Pin_9);TIM_ClearITPendingBit(TIM1,TIM_IT_Update);}}void EXTI3_IRQHandler(void){/* 检测EXTI3是否有效*/if(EXTI_GetITStatus(EXTI_Line3)!= RESET){while(1){/*可随便加入现象,便于观察*/GPIO_ResetBits(GPIOC,GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);/* 清除EXTI3的悬起标志位*/EXTI_ClearITPendingBit(EXTI_Line3);}}}。

《嵌入式系统原理与应用》实验报告04-看门狗实验

《嵌入式系统原理与应用》实验报告04-看门狗实验
六、教师评语
签名:
日期:
成绩
WDFEED=0x55;
}
void FeedDog(void)
{
WDFEED=0xaa;
WDFEED=0x55;
}
int main (void)
{
uint32 dly;
PINSEL0=0x00;
PINSEL1=0x00;
IO0DIR=led;
IO0SET=led;
for(dly=0;dly<500000;dly++);
1.实验效果截图
2.源程序
#include "config.h"
#define key (1<<20)//set the button to be P0.20
#define led (1<<7)
void WDT_Init(uint32 time)
{
WDTC=time;
WDMOD=0x03;
WDFEED=0xaa;
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,Proteus软件,ADS1.2
三、实验内容与步骤
实验内容:
运行程序时,LED灯闪烁一下,并启动看门狗;当按键按下时,停止喂狗,此时会引起看门狗复位;复位之后,程序重新运行,此时LED灯又闪烁了一下。
四、实验结果与数据处理
《嵌入式系统原理与接口技术》实验报告
实验序号:4实验项目名称:看门狗实验
学 号
XXXX
姓 名
XXX
专业、班
计算机科学与技术
实验地点
1-416
指导教师
XXX
实验时间

嵌入式系统看门狗实验报告

嵌入式系统看门狗实验报告

竭诚为您提供优质文档/双击可除嵌入式系统看门狗实验报告篇一:《嵌入式系统原理与应用》实验报告04-看门狗实验《嵌入式系统原理与接口技术》实验报告实验序号:4实验项目名称:看门狗实验1234篇二:嵌入式实验报告目录实验一跑马灯实验................................................. (1)实验二按键输入实验................................................. .. (3)实验三串口实验................................................. . (5)实验四外部中断实验................................................. .. (8)实验五独立看门狗实验................................................. (11)实验七定时器中断实验................................................. (13)实验十三ADc实验................................................. .. (15)实验十五DmA实验................................................. .. (17)实验十六I2c实验................................................. (21)实验十七spI实验................................................. .. (24)实验二十一红外遥控实验................................................. .. (27)实验二十二Ds18b20实验................................................. (30)实验一跑马灯实验一.实验简介我的第一个实验,跑马灯实验。

基于单片机按键控制看门狗仿真设计

基于单片机按键控制看门狗仿真设计

基于单片机按键控制看门狗仿真设计本文档旨在介绍《基于单片机按键控制看门狗仿真设计》的主题,并提供写作大纲的目的概述。

该文档将深入探讨如何利用单片机按键控制看门狗的仿真设计。

我们将详细介绍看门狗的概念和原理,并提供一个基于单片机按键的仿真设计案例。

通过本文档的阅读,读者将了解如何使用单片机按键来控制看门狗,在系统遇到异常情况时采取适当的措施来保护系统的稳定性和可靠性。

接下来,将按照以下大纲扩写内容,详细介绍《基于单片机按键控制看门狗仿真设计》的相关内容。

在介绍基于单片机按键控制看门狗的仿真设计之前,我们需要先了解单片机和看门狗的概念,并探讨为什么使用单片机按键控制看门狗是有意义的。

单片机是一种集成了微处理器核心、内存、输入/输出设备和其他功能模块的微型计算机系统。

它具有体积小、功耗低、成本低等特点,因而广泛应用于各种电子设备中。

看门狗(Watchdog)是一种用于检测和处理系统故障的硬件或软件机制。

它监视系统运行状态,并在系统发生故障时自动执行预定的纠错操作。

看门狗的主要作用是保障系统的稳定性和可靠性。

基于单片机按键控制看门狗的仿真设计就是利用单片机上的按键来控制看门狗的功能。

通过按下特定的按键,我们可以触发或关闭看门狗的工作,以解决系统故障或异常情况。

使用单片机按键控制看门狗具有以下意义:提高系统的稳定性:通过按键控制看门狗,可以及时检测和处理系统故障,保障系统的稳定运行。

简化系统调试过程:按键控制看门狗可以方便地触发系统故障模式,便于调试和定位问题。

提升系统的可靠性:看门狗机制可以在系统故障时自动执行纠错操作,提高系统的可靠性和容错能力。

综上所述,基于单片机按键控制看门狗的仿真设计是一种有效的解决方案,可以提高系统的稳定性、简化系统调试过程并提升系统的可靠性。

本文将阐述按键控制看门狗的仿真设计步骤,包括硬件和软件方面的具体要点。

硬件设计步骤准备所需材料和器件,包括单片机、按键、继电器等。

按照电路原理图连接各个器件,确保电路的正确性和稳定性。

15-看门狗实验

15-看门狗实验

第15章看门狗15.1概述接触过c51的朋友,对看门狗的概念应该不陌生吧?看门狗在某种程度上有软件复位的意义。

比起c51,AVR的看门狗更简单,而且很听话。

本章笔记可能会比较短,毕竟配置看门狗,就几个动作而已。

15.2关于看门狗的寄存器看门狗的操作其本上有"开狗","喂狗","关狗"这三个步骤。

开狗的意思是初始化看门狗并且使能它;喂狗的意思是复位看门狗;关狗动作就是不使能看门狗。

而配置看门狗的寄存器就只有一个而已。

看门狗定时器控制寄存器WDTCR该寄存器的功能如名字般,使能|不使能看门狗,设置喂狗的最长时间。

WDTOE位,该位的存在时为了关闭看门狗。

必须附和使用WDE位。

WDE位,看门狗使能位。

该位置一时启动看门狗。

WDP0~2,喂狗时间配置位。

具体的配置如下图。

该寄存器的每一个位如果不配合使用,说真的意义很小。

15.3"开狗","喂狗","关狗""开狗"-启动看门狗的具体步骤如下:1.配置喂狗时间。

2.使能看门狗。

(以上的动作可以在一个指令完成)C语言的写法://看门狗启动函数void WDT_ON(){WDTCR=0x0f;//WDE=1-看门狗使能,WDP0:1:2=1:1:1-2秒喂狗。

}"关狗"-关闭看门狗的具体步骤如下:1.WDTOE位和WDE位同时置一。

2.WDE位置零。

C语言的写法://看门狗关闭函数void WDT_OFF(){WDTCR|=BIT(WDTOE)|BIT(WDE);//制造4个周期关闭时间WDTCR&=~BIT(WDE);//关闭看门狗}为什么关闭看门狗需要同时置一WDTOE和WDE位呢?具体我也不是很清楚,但是根据手册说:当WDTOE和WDE一同置一时,会产生4个有效的关闭周期。

如果在这四个周期内,将WDE位设置位0,那么久会成功关闭看门狗。

7.看门狗实验

7.看门狗实验

IWDG_SetReload(rlr);
IWDG_ReloadCounter(); IWDG_Enable(); }
3.3 独立看门狗主程序
回到主界面,在 main.c 文件里面编写如下代码:
#include "led.h" #include "delay.h"
#include "sys.h"
#include "wdg.h"
2.5 预分频寄存器IWDG_PR(STM32参考手册 P318)
2.6 重装寄存器IWDG_RLR(STM32参考手册 P318)
2.7 独立看门狗超时时间
溢出时间计算: Tout=((4×2^prer) ×rlr) /40 时钟频率LSI=40K, 一个看门狗时钟周期就是最短超时时间。 最长超时时间= (IWDG_RLR寄存器最大值)X看门狗时钟周期
delay_ms(100);
PBout(0)=0;
while(1);
}
#include "sys.h"
#include "wdg.h"
int main(void)
{ delay_init(); LED_Init();
5.3 窗口看门狗主程序
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);
void WWDG_Init(u8 tr,u8 wr,u32 fprer);
void WWDG_Set_Counter(u8 cnt); void WWDG_NVIC_Init(void); #endif

6Zigbee实验报告《看门狗》

6Zigbee实验报告《看门狗》
实验步骤:
1)打开鼎轩VSN实验箱,检查实验箱设备,确保实验箱设备完整、连接无误后,连接电源线,打开电源开关;
2)用烧录线连接汇聚网关上的烧录接口与电脑USB接口;
3)点击(\cC2530-simpledemo\cc2530-simple-demo\WATCHDOG)目录下的工程图标watchdog.eww打开工程;.
WDCTL = 0x50;
}
/***************************
//主函数
*************************itLed();//调用初始化函数
Init_Watchdog();
LED1=1;
while(1)
{
LED2=~LED2; //仅指示作用。
LED1 = 0; //LED1灯熄灭
LED2 = 0;//LED2灯熄灭
}
void Init_Watchdog(void)
{
WDCTL = 0x00; //这是必须的,打开IDLE才能设置看门狗
WDCTL |= 0x08;
//时间间隔一秒,看门狗模式
}
void FeetDog(void)
{
WDCTL = 0xa0;
for(j=587;j>0;j--);
}
第二页
实验内容与步骤
/****************************
//初始化程序
*****************************/
void InitLed(void)
{
P1DIR |= 0x03; //P1_0、P1_1定义为输出
P1INP |= 0X03; //打开下拉
Delayms(300);

27. 窗口看门狗实验

27. 窗口看门狗实验
普中STM32开发板带您进入ARM世界
窗口看门狗实验
普中STM32开发板带您进入ARM世界
本讲主要内容
1.WWDG介绍 2.WWDG配置步骤 3.硬件电路 4.编写窗口看门狗控制程序
பைடு நூலகம்
普中STM32开发板带您进入ARM世界
1.WWDG介绍
1.1 WWDG简介 上一章我们已经介绍了IWDG,知道它的工作原理就是一个12位递减计
数器不断递减计数,当减到0之前还未进行喂狗的话,产生一个MCU复位 。窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断 的往下递减计数,当减到一个固定值 0X40 时还不喂狗的话,产生一个 MCU复位,这个值叫窗口的下限,是固定的值,不能改变。这个和独立看 门狗是类似的,不同的是窗口看门狗的计数器的值在减到某一个数之前 喂狗的话也会产生复位,这个值叫窗口的上限,上限值由用户独立设置 。窗口看门狗计数器的值必须在上窗口和下窗口之间才可以刷新(喂狗 ),这也是窗口看门狗中“窗口”两个字的含义。
普中STM32开发板带您进入ARM世界
窗口看门狗时序图:
T[6:0]是窗口控制寄存器(WWDG_CR)的低7位,W[6:0]是窗口配置寄 存器(WWDG_CFR)低7位。T[6:0]就是窗口看门狗的计数器值,而W[6:0] 是窗口看门狗的上窗口,下窗口是固定值0X40。当窗口看门狗的计数器 在上窗口值之外或者低于下窗口值被刷新都会产生复位。
(3)开启WWDG中断并分组
NVIC_Init(); WWDG_EnableIT();
普中STM32开发板带您进入ARM世界
(4)设置计数器初始值并使能WWDG
void WWDG_Enable(uint8_t Counter); void WWDG_SetCounter(uint8_t Counter);

看门狗实验

看门狗实验

看门狗实验一、实验目的1.掌握“看门狗”(MAX 813L )复位控制的硬件接口技术2.掌握“看门狗”(MAX 813L )复位控制驱动程序的设计方法二、实验说明为了控制系统不受外界干扰而出现死机现象,可采用MAX813L 复位监控芯片,该芯片具备复位及监视跟踪两大功能。

主要功能:·精密电源电压、监控4.65V ·200ms 复位脉冲宽度·V1=1V 时保证复位RESET 有效。

·TTL/CMOS 兼容的防抖动人工复位输入·独立的监视跟踪定时器1.6S 溢出时间。

·电源故障或欠电压报警的电压监控 ·加电,掉电有电压降低时输出复位信号。

·低电平有效的人工复位输入 。

各引脚的功能和意义如图:(1)MR :人工复位输入、当输入降至0.8V 时产生复位脉冲,低电平有效的输入可用开关短路 到地或TTL/CMOS 逻辑驱动,不用时浮空。

(2)VCC :+5V 输入。

(3)GND :地。

(4)PFI :电源故障比较器输入,高PFI 低于1.25V 时PFO 输出低电平吸收电流;否则PFO 输出保持高电平,如果不用将PFI 接地或VCC 。

(5)PFO :电源故障比较器输出,高PFI 低于1.25V 时,输出低电平且吸收电流;否则PFO 输出 保持高电平。

(6)WDI :监视跟踪定时器输入,WDI 保持高或低电平时间长达1.6S ,WDI 输出低电平,WDI 浮空或接高阻三态门将禁止监控跟踪定时器功能,只要发生复位,内部监视跟踪定时的清零。

(7)RESET :复位输出(低电平有效)。

(8)WDO :监视跟踪定时器输出,当内部监视跟踪定时器完成1.6S 计数后,本脚输出低电平,直到下一次监视跟踪定时器清零, 才再变为高电平,在低电源或VCC 低于复位门限电压时,WDO 就保持低电平,只要VCC 上升到复位门跟电压以上后 WDO 就变为高电平而没有滞后。

AVR内部看门狗实验

AVR内部看门狗实验
AVR内部看门狗实验
AVR内部看门口实验。
1、看门口实验。在主程序中周期喂狗,通过按下按键让程序无限循环,从
而启动看门狗。
2、内部1 M晶振,程序采用单任务方式,软件延时。
3、进行此实验请插上JP1、JP3的所有8个短路块,JP7(LED_EN)短路
块。
4、通过此实验可了解看门狗的设置及看门狗的喂狗等。
1S*/while (1) &#123;
delay_ms(250);
WDR();/*喂ห้องสมุดไป่ตู้*/
PORTB–(1 << 0);/*PB0电平取反*/
while(PINA != 0xFF);/*检测按键*/
&#125;
&#125;
*/
#include“iom16v.h”
#include
/*延时函数*/
void delay_ms(unsigned char i)&#123;
unsigned char a, b;
for (a = 1; a < i; a++) &#123;
for (b = 1; b; b++) &#123;
;
&#125;
PORTD = 0xFF;
PORTB = 0x00;
WDR();/*喂狗*/
delay_ms(250);
WDR();/*喂狗*/
delay_ms(250);
PORTB = 0xFF;
WDTCR |= ((1 << WDTOE) | (1 << WDE));/*启动时序*/
WDTCR=((1<<WDE)|(1<<WDP2)|(1<<WDP1));/*设定周期为

S3C2410的看门狗定时器中断实验

S3C2410的看门狗定时器中断实验

实验5 S3C2410 看门狗定时器中断实验一、实验目的掌握S3C2410 看门狗定时器的工作原理和定时时间的计算方法,会在MDK中可视化配置看门狗,理解看门狗中断的触发过程,熟练掌握和中断相关寄存器的使用以及中断服务函数的编程方法。

二、实验预备知识熟悉UP-NETARM2410实验箱的结构,S3C2410的外设接口电路,熟悉MDK编程软件的使用方法,熟悉C语言程序设计的一般方法。

三、实验内容在MDK的配置向导中配置WDT,使其定时一秒,定时时间到后触发WDT中断,控制三个LED每隔一秒循环闪烁,编写C语言程序编译并下载到UP-NETARM2410实验箱,可以看到GPC5/GPC6/GPC7上所接的三个LED循环闪烁,实现精确定时一秒。

图1 MDK中看门狗定时器的配置四、参考程序本工程中包括三个文件:S3C2410A.s、ledflash.c和cvectaddr.c主程序文件ledflash.c的内容如下:1 extern void openDog(void);23 extern void c_Wdt_ISR(void);45 int main()6 {7 // 0x010FFF20+0x24 is the address of Watchdog jumper8 *(volatile unsigned int *)(0x010FFF20+4*9)=(unsigned)c_Wdt_ISR;9 openDog();10 while(1)11 {1213 }14 }文件cvectaddr.c的内容如下:1 #define LED1_MASK 0x202 #define LED2_MASK 0x403 #define LED3_MASK 0x8045 #define GPCDAT_ADDR (*(volatile unsigned int *)0x56000024)67 #define SRCPND (*(volatile unsigned int *)0x4A000000)8 #define INTMOD (*(volatile unsigned int *)0x4A000004)9 #define INTMSK (*(volatile unsigned int *)0x4A000008)10 #define PRIORITY (*(volatile unsigned int *)0x4A00000C)11 #define INTPND (*(volatile unsigned int *)0x4A000010)12 #define INTOFFSET (*(volatile unsigned int *)0x4A0000141314 // enable watchdog timer intterupt15 void openDog(void)16 {17 INTMOD = 0x0; // set as IRQ18 INTMSK &= ~(0x200); //open Dog19 PRIORITY = 0x7F;20 }21 int number=0;22 int nLED=0;23 __irq void c_Wdt_ISR()24 {2526 int iReg=0;27 if(SRCPND | 0x200)28 SRCPND = 0x200;29 if(INTPND | 0x200)30 INTPND = 0x200;31 //INTMSK |= 0xFFFFFFFF; //close all, include Dog32 nLED = 0;33 switch(number)34 {35 case 0: // SWI number 0 code36 nLED ^=(LED2_MASK | LED3_MASK);// LED1 light37 break;38 case 1:39 nLED ^=(LED1_MASK | LED3_MASK);// LED2 light40 break;41 case 2:42 nLED ^=(LED1_MASK | LED2_MASK);// LED3 light43 break;44 }45 number++;46 if(number>2)47 number=0;48 GPCDAT_ADDR = nLED; // Led shine in turn4950 __asm // open IRQ51 {52 MRS iReg, CPSR53 BIC iReg, iReg, #0x8054 MSR CPSR_c, iReg55 }56 //INTMSK &= ~(0x200); // open Dog57 }五、实验结果请自己作答。

看门狗实验

看门狗实验

看门狗实验1. 为什么要看门狗?看门狗的原理是什么?外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。

假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。

一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。

2. 看门狗的功能1)作为常规功能可以产生中断,通用的中断用16bit定时器2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时(PCLK)钟的的复位信号我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。

下图为看门狗的电路示意图PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。

看门狗定时器记数值的计算公式如下:t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器(WTCNT)中。

实验6--看门狗错误喂狗产生中断实验

实验6--看门狗错误喂狗产生中断实验

实验报告班级学号姓名同组人实验日期室温大气压成绩实验题目:看门狗错误喂狗产生中断实验一、实验目的:1、通过本实验进一步掌握对ARM7.0软件和EasyJTAG仿真器的使用,以及进一步熟悉EasyARM2131开发板硬件结构,掌握各引脚功能和接线。

2、通过实验,进一步掌握看门狗的相关原理及方框图。

3、通过实验,进一步了解看门狗出现错误或者是不完整的喂狗时产生复位或使能的功能,并且掌握看门狗的喂狗过程及其错误喂狗产生的中断的功能。

二、实验仪器:装有ADS1.2及EasyJTAG仿真器的计算机一台、ARM7开发板一块三、实验原理(一)具有如下特性:(二)结构如下:(三)寄存器描述:四、实验程序及结果:#include "config.h"#define BEEP 1 << 7// P0.7控制蜂鸣器BEEP,低电平蜂鸣#define WDT 0// WDT中断号#define LED2 1 << 17 // P0.17控制LED2,低电平点亮#define KEY1 1 << 16// P0.16连接KEY1void DelayNS (uint32 dly){uint32 i;for ( ; dly>0; dly--)for (i=0; i<50000; i++);}/********************************************************************************************** ************** 函数名称:WDT_Int()** 函数功能:看门狗中断服务程序** 入口参数:无** 出口参数:无*********************************************************************************************。

看门狗实验报告

看门狗实验报告

看门狗实验报告看门狗实验报告引言:近年来,随着科技的不断进步,智能家居已经成为了人们生活中的一部分。

其中,看门狗作为智能家居的一种重要组成部分,不仅可以保障家庭安全,还能提供便利。

本文将对看门狗的实验进行报告,探讨其功能、优势以及未来的发展。

一、看门狗的功能看门狗是一种通过声音、图像等感知技术,能够自动识别陌生人和异常情况的智能设备。

其主要功能包括以下几个方面:1. 安全监控:看门狗能够通过高清摄像头实时监控家庭环境,一旦检测到异常情况,如入侵者或火灾等,会立即发出警报并通知家庭成员。

这种智能化的安全监控系统,为家庭带来了更高的安全保障。

2. 远程控制:通过手机APP或者智能音箱等设备,家庭成员可以随时随地远程控制看门狗。

比如,当家庭成员不在家时,可以通过手机APP查看家中的实时图像,了解家庭状况,确保家人的安全。

3. 语音交互:看门狗还具备智能语音交互功能,可以通过语音指令实现各种操作。

比如,家庭成员可以通过语音指令让看门狗打开门锁、关闭灯光等,提供了更加便捷的生活体验。

二、看门狗的优势相比传统的门禁系统,看门狗具有以下几个明显的优势:1. 智能化:看门狗采用了先进的人工智能技术,能够通过学习和分析,自主判断何为异常情况。

相比传统门禁系统,其具备更高的准确性和智能性,能够更好地保障家庭安全。

2. 便捷性:看门狗的远程控制功能,使得家庭成员可以随时随地掌握家庭状况,并进行相应的操作。

不再需要携带钥匙或者依赖其他人的帮助,大大提高了生活的便利性。

3. 可视化:通过高清摄像头,看门狗能够提供清晰的实时图像,让家庭成员可以随时了解家中的情况。

这种可视化的特点,不仅带来了安全感,还为家庭成员提供了更多的互动和娱乐方式。

三、看门狗的未来发展随着科技的不断进步,看门狗在未来将有更广阔的应用前景:1. 人脸识别技术:目前,看门狗主要通过声音和图像等感知技术进行识别,但是随着人脸识别技术的不断发展,未来的看门狗可能会具备更高的识别准确性和速度,能够更好地辨认家庭成员和陌生人。

STM32看门狗实验

STM32看门狗实验
实验目的:
1.分析和学习固件库 2.理解固件库的结构 3.通过 stm32f10x_iwdg.c/.h 文件,熟悉 IWDG(独立看门狗)的控制和工作原理 4.复习按键中断的使用方法
实验要求:
1.使用 LED 灯 LED1 来指示程序是否重启(IWDG) 2.使用按键 WAKEUP 来不断地喂狗,并用 LED4 灯指示
最适合应用于要求看门狗运行时,完全独立与主应用之外的项目
硬件电路分析:
这里的核心是在 STM32 内部进行,并不需要外部电路。但是考虑到指示当前状态和喂狗等操作,我们需要 2 个 IO 口,一 个用来输入喂狗信号,另外一个用来指示程序是否重启。喂狗我们采用板上的 WAKEUP 键来操作,而程序重启,则是通过 LED4 来指示的。LED4 和 WAKEUP 的连接在前面跑马灯实验已经介绍了,这里我们不再多说
/* Check the parameters */ assert_param(IS_IWDG_WRITE_ACCESS(IWDG_WriteAccess)); IWDG->KR = IWDG_WriteAccess; } 可以看出,该函数的作用就是把输入参数传递到 IWDG_KR 中去. 在 stm32f10x.h 中我们找到输入参数的定义,如下所示 #define IWDG_WriteAccess_Enable ((uint16_t)0x5555) #define IWDG_WriteAccess_Disable ((uint16_t)0x0000) #define IS_IWDG_WRITE_ACCESS(ACCESS) (((ACCESS) == IWDG_WriteAccess_Enable) || \
STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗 的时钟并不是准确的 40Khz,而是在 30~60Khz 之间变化的一个时钟,只是我们在估算的时候,以 40Khz 的频率来计算, 看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。 通过对 LSI 进行校准可获得相对精确的看门狗超时时间。有关 LSI 校准的问题,详见数据手册 LSI 时钟一节。

七__看门狗实验手册_专业尚阳

七__看门狗实验手册_专业尚阳

CC2430 DK ZigBee 开发板看门狗实验手册专业尚阳2010-01-10目录1 特性介绍 (3)1.1 看门狗模式 (3)1.2 定时器模式 (4)2 相关寄存器 (4)2.1 WDCTL (0xC9) –看门狗定时器控制.......... (4)3 实验及程序分析 (5)3.1 实验一 看门狗模式 (4)3.1.1 实验目的 (4)3.1.2 重要代码解析 (4)3.2 实验二 喂狗实验..................... . (4)3.2.1 实验目的 (4)3.2.2 重要代码解析 (4)在 CPU 可能受到一个软件颠覆的情况下,看门狗定时器(WDT)用作一个恢复的方法。

当软件在选定时间间隔内不能清除 WDT 时,WDT 必须就复位系统。

看门狗可用于受 到电气噪音,电源故障,静电放电等影响的应用,或需要高可靠性的环境。

如果一个应用不 需要看门狗功能,可以配置看门狗定时器为一个间隔定时器,这样可以用于在选定的时间间 隔产生中断。

看门狗定时器的特性如下:●四个可选的定时器间隔●看门狗模式●定时器模式●在定时器模式下产生中断请求●时钟独立于系统时钟WDT 可以配置为一个看门狗定时器或一个通用的定时器。

WDT 模块的运行由 WDCTL 寄存器控制。

看门狗定时器包括一个 15 位计数器,它的频率由 32.768kHz 振荡器时钟规定。

注意用户不能获得 15 位计数器的内容。

1 特性介绍1.1 看门狗模式在系统复位之后,看门狗定时器就被禁用。

要设置 WDT 在看门狗模式,必须设置 WDCTL.MODE 位为 0 。

当 WDCTL.EN 位设置为 1,看门狗定时器的计数器开始递增。

在 看门狗模式下,一旦定时器使能,就不可以禁用定时器,比如,当 WDCTL.MODE 是 0,如 果 WDCTL.EN 位已经写入了 1 ,再往这个位写入 0 就不起作用了。

WDT 运行在一个频率为 32.768 kHz 的看门狗定时器时钟上。

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

看门狗实验
1. 为什么要看门狗?看门狗的原理是什么?
外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称"看门狗"(watchdog)它的基本原理为,给看门狗设置一个时间周期,如果在这个周期内程序不能正常运行结束,定时器会自动益处,则系统会自动复位,使系统重新运行进而得到监控系统的作用。

假设程序运行的时间为Tp,定时器时间为Ti,Ti>Tp,在Ti时间内程序正常结束则不会发生益处的现象,如果受干扰等原因系统不能在Tp时刻内修改计数器的值,则在Ti时刻时系统会自动复位,引发系统重新运行。

一般情况下都是应用程序在运行结束后去喂狗,当应用程序出现异常而不能去喂狗时,在超过看门狗定时器的时间范围后,cpu会复位,起始喂狗的过程就是给看门狗的寄存器置位,当程序开始运行时,看门狗的计数器开始递减,在减到零之前必须喂狗,否则系统会复位,当减到零时还没有喂狗则系统复位。

2. 看门狗的功能
1)作为常规功能可以产生中断,通用的中断用16bit定时器
2)作为看门狗使用,当时钟计数器减为0时(超时),他将产生一个128个时
(PCLK)钟的的复位信号
我们常见的时钟有3个,FCLK,HCLK,PCLK,他们的工作频率分别是400MHz,400/3MHz,和400/6MHz,看门狗使用的是PCLK时钟。

下图为看门狗的电路示意图
PCLK经过两次降频,prescaler的值从0到256-1,Division_factor的值为16,32,64,128。

看门狗定时器记数值的计算公式如下:
t_watchdog的值是寄存计数器(WDTCNT)多长时间自减一次,他的单位是时间,一旦看门狗定时器被允许,看门狗定时器数据寄存器(WTDAT)的值不能被自动的装载到看门狗计数器(WTCNT)中,因此,看门狗启动前要将一个初始值写入看门狗计数器
(WTCNT)中。

3. 看门狗定时器要用到的寄存器
1. WTCON――看门狗定时器控制寄存器
WTCON允许用户禁止或使能看门狗定时器,从4中不同的信号源选择时钟信号,允许或禁止中断,并且能允许或禁止看门狗时钟输出,如果用户想要使用看门狗作为普通时钟,应该中断使能,禁止看门狗定时器。

2. WTDAT――看门狗定时器数据寄存器
WTDAT 用于设置看门狗定时器的超时时间值,在初始化看门狗过程中,WTDAT 的值不会自动加载到定时计数器中,首次使用定时器超时值为其初始值即0x8000,以后该寄存器的值会被自动加载到WTCNT 寄存器中。

这是个数据寄存器,你可以设置t_watchdog的次数,上面计算出看门狗计数寄存器每减一次需要的时间,就是t_watchdog,WTDAT设置的就是它自减的次数,所以看门狗相邻两次复位的时间间隔就是你设置的WTDAT的次数乘以t_watchdog。

如果正常程序运行的时间比较长,你可以将WTDAT的次数设置大一点,这样复位的时间就变大,不会影响系统复位。

注意:WTDAT和WTCNT不一样,WTDAT是数据寄存器,它是你设置的一个值,这个值是个固定的值,而WTCNT是数据计数器,他的值是会变的,每变一次就经历t_watchdog这么长时间,直到将WTDAT设置的数自减到0,也就是所说的看门狗的复位时间间隔,当WTCNT自减到0,系统才会复位。

3. WTCNT――看门狗定时器计数寄存器
WTCNT 为看门狗定时器工作的时间计数器的当前计数值,注意在初始化看门狗操作后,看门狗数据寄存器(WTDAT)的值不能自动装载到看门狗计数寄存器(WTCNT)中,所以看门狗被允许之前应该初始化看门狗计数寄存器的值。

实例代码分析
#include "2440addr.h"
#include "2440lib.h"
void watchdog_test(void);
void __irq Watchdog_ISR(void); //__irq是ADS中定义中断函数的关键字
//复位次数
int f_ucSencondNo=0; //复位次数
void xmain(void)
{
ChangeClockDivider(3,1);
ChangeMPllValue(127,2,1); //405MHZ
Isr_Init();
Uart_Init(0, 115200);
Uart_Select(0);
Uart_Printf("watchdog test is beginning\n");
watchdog_test();
}
void watchdog_test(void)
{
rSUBSRCPND |= BIT_SUB_WDT; //set bit 13 =1 open INT_WDT
// ClearSubPending(BIT_SUB_WDT);
// ClearSubPending(BIT_SUB_WDT);
//建立WatchDog中断
pISR_WDT_AC97=(unsigned)Watchdog_ISR;
//Prescaler value=100;lock division factor=128 ;PCLK=67.5MHz
//t_watchdog=1/[PCLK/(Prescaler value+1)/Division_factor]=0.0002
//disable watchdog
rWTCON=((100<<8)|(3<<3)); //factor=128 [4,3]=11,Prescaler value = 100
//看门狗时钟中断周期T=WTCNT*t_watchdog=3S
//看门狗喂狗
rWTDAT=15000; //两次喂狗的中断时间次数
rWTCNT=15000; //15000 * t_watchdog 复位周期,t_watchdog指多长时间计数器减一,一共15000次,所以总时间长为15000 * t_watchdog
rWTCON &= ~(3); //disable reset关闭定时器复位
rWTCON |= ((1<<5)|(1<<2)); //enable Watchdog timer and watchdog interrupt
//开中断
rINTMSK &=~BIT_WDT_AC97;
rINTSUBMSK &=~BIT_SUB_WDT;
while(f_ucSencondNo<11);
}
/**** watchdog_init ****/
void __irq Watchdog_ISR(void)
{
if(rSUBSRCPND & BIT_SUB_WDT)
{//清除中断
ClearSubPending(BIT_SUB_WDT);
ClearPending(BIT_WDT_AC97);
f_ucSencondNo++;
if(f_ucSencondNo<11)
Uart_Printf("%ds\n",f_ucSencondNo*3);
else
{
//mask watchdog timer interrupt
DisableSubIrq(BIT_SUB_WDT);
DisableIrq(BIT_WDT_AC97);
Uart_Printf("watch dog is ok\n");
}
}
}。

相关文档
最新文档