Arduino看门狗2 出现一个问题问题,求助

我的独立看门狗总结
> 我的独立看门狗总结
我的独立看门狗总结
一、概述1.)看门狗设备(和窗口看门狗)可用来检测和解决由引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。2.)功能图:(由于本人无法贴图,请见参考手册,125页)3.)()由专用的40kHz 的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。4.)其中_PR为预分频器寄存器,IWDG_RLR为重新加载计数器寄存器,IWDG_KR为控制器存器。IWDG_SR为状态寄存器。(见图)5.)IWDG_KR写入OXCCCC,启动独立看门狗功能,计数器值开始递减,减到0时,看门狗复位。IWDG_KR写入0XAAAA,计数器值被重新加载,即避免看门狗复位。IWDG_KR写入0X5555,则允许写IWDG_PR 和IWDG_RLR寄存器写操作。写入其它值,IWDG_PR 和IWDG_RLR被保护,数据将无法写入这两个寄存器。IWDG_SR状态寄存器指示预分频值和递减计数器是否正在被更新。IWDG_RLR寄存器范围为0-0xfff.6.)如果用户在选择字节中启用了“硬件看门狗“功能,在系统上电复位后,看门狗会自动开始运行;如果在计数器计数结束前,若软件没有向键寄存器写入相应的值,则系统会产生复位。7。)看门狗复位时,系统复位,程序重新开始运行。二、实验功能为了实现IWDG复位功能,本人做了一个实验:采用优易特电子的EDU开发板,功能如下:系统上电,蜂鸣器延时叫一声,之后关闭。IWDG 40K的内部低速时钟进行8分频产生5KHZ的看门狗计数时钟,RLR设为2500,即看门狗复位时间设为500MS。LD1灯亮,表示看门狗初始化完毕。开启看门狗功能。定时器3定为200MS定时器,在每次定时器中断中,将看门狗计数器重新加载,当加载到25(5S)次以后,不再加载看门狗。这样,看门狗会在后面的时间发生复位,从而系统重新运行。检查蜂鸣器是否每约5S叫一声,如果这样表示IWDG发生了复位。功能检验完成。经实验证明,以上功能均正确。三、程序如下main(){u32RCC_init();Gpio_int();GPIO_ResetBits(GPIOC,GPIO_Pin_6);//蜂鸣器叫一声关闭for(temp=0;temp200000;temp++);GPIO_SetBits(GPIOC,GPIO_Pin_6);IWDG_init();GPIO_SetBits(GPIOF,GPIO_Pin_6);//LD1灯亮Timer_init();NVIC_init();while(1);}……………………………………………………………………….void IWDG_init(void){/* Enable write access to IWDG_PR and IWDG_RLR registers */IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);/* IWDG counter clock: 40KHz(LSI) / 8 = 5 KHz */IWDG_SetPrescaler(IWDG_Prescaler_8);/* Set counter reload value to ms */IWDG_SetReload(2499);/* Reload IWDG counter */IWDG_ReloadCounter();/* Enable IWDG (the LSI oscillator will be enabled by hardware) */IWDG_Enable();}void NVIC_init(void){NVIC_InitTypeDef NVIC_InitS#ifdef VECT_TAB_RAM
分频器相关文章:
尘埃粒子计数器相关文章:
蜂鸣器相关文章:
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一玩过看门狗的进来 新手求助_百度知道求助 如图所示_看门狗吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:58,302贴子:
求助 如图所示
一切都好好的
就是这里会闪退
好几次都是这里
重新打开还是过开场动画
如图所示,为何pvp模式...
如图所示,点开抱抱,输...
这个图怎么打?用什么兵...
隔壁吧看的我快炸了,信...
还原经典,重铸辉煌,下个奇迹就是你!海量钻石,众多好礼,你敢拿我就送!
可能吧里也有和我一个情况的吧
谁能帮帮我啊
百度win10闪退解决办法
win10把3大妈文件删了然后R组补丁
贴吧热议榜
使用签名档&&
保存至快速回贴看完这篇文章包你明白“看门狗”定时器! - 单片机论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
看完这篇文章包你明白“看门狗”定时器!
14:59:45  
如果你已经是一名电子工程师,那你对看门狗定时器都一定都很熟啦。不过今天我还是要就和大家一起梳理一下看门狗方面的知识,相信还是有些新晋电子工程师不太了解,可以好好学习一下,每天进步一点点,大神们看到此文有什么不足欢迎发表自己的高见!
看门狗是什么?
_110403.png (24.01 KB, 下载次数: 0)
14:50 上传
看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,在单片机程序的调试和运行中都有着重要的意义。它的主要功能是在发生软件故障时,通过使器件复位(如果软件未将器件清零)将单片机复位。也可以用于将器件从休眠或空闲模式唤醒。
有一个很形象的比喻,看完后也许您对看门狗有更深入的理解。
看门狗其实就是这么回事
比如说你正在绕着一座小山裸奔。——程序按预定流程执行。
每次经过山脚下的某个地方,你都给一条大狼狗一根肉骨头。——喂狗。
奔着奔着,你奔叉了道,跑到了不该去的山顶。——程序跑飞了。
或者,你在裸奔的途中睡着了。——程序死机。
这时,那条大狼狗,由于一直得不到喂食,饿疯了,挣脱锁链来追你。——看门狗定时器溢出。
你被它一吓,脚底一软,从山上咕噜咕噜滚下来。起来一看,靠,又回到了出发地点。于是只好又从头开始裸奔。——程序复位。
看门狗这东西是加强可靠性用的
看门狗是不随主芯片时钟的停止而停止的,它是一个独立的计时单元,假如你在程序中使用并设置了看门狗寄存器,在系统加电后它就会启动,若在指定周期内没有重置看门狗寄存器(也就是大家常说的喂狗),系统将会重新启动。
这种设计为系统提供了极高的可靠性,即使系统死锁,也可以及时的自动恢复系统。
_145404.png (22.91 KB, 下载次数: 0)
14:50 上传
看门狗的原理
硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。
软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,我们还是以51系列来讲,我们知道在51单片机中有两个定时器,我们就可以用这两个定时器来对主程序的运行进行监控。我们可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里我们要设定的定时值要小于主程序的运行时间,这样在主程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1我们用来监控主程序的运行,我们给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与否我们再由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。51 系列有专门的看门狗定时器,对系统频率进行分频计数,定时器溢出时,将引起复位.看门狗可设定溢出率,也可单独用来作为定时器使用.
看门狗使用注意
大多数51 系列单片机都有看门狗,当看门狗没有被定时清零时,将引起复位。这可防止程序跑飞。设计者必须清楚看门狗的溢出时间以决定在合适的时候,清看门狗。清看门狗也不能太过频繁否则会造成资源浪费。程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器置数,即可预防溢出中断而引起的误复位。
系统软件&看门狗&的设计思路
1.看门狗定时器T0的设置。在初始化程序块中设置T0的工作方式,并开启中断和计数功能。系统Fosc=12 MHz,T0为16位计数器,最大计数值为(2的10次方)-1=65 535,T0输入计数频率是.Fosc/12,溢出周期为(65 535+1)/1=65 536(μs)。
2.计算主控程序循环一次的耗时。考虑系统各功能模块及其循环次数,本系统主控制程序的运行时间约为16.6 ms。系统设置&看门狗&定时器T0定时30 ms(T0的初值为65 536-30 000=35 536)。主控程序的每次循环都将刷新T0的初值。如程序进入&死循环&而T0的初值在30 ms内未被刷新,这时&看门狗&定时器T0将溢出并申请中断。
3.设计T0溢出所对应的中断服务程序。此子程序只须一条指令,即在T0对应的中断向量地址(000BH)写入&无条件转移&命令,把计算机拖回整个程序的第一行,对单片机重新进行初始化并获得正确的执行顺序。
现在的绝大多数mcu都有看门狗看门狗的主要操作一般有三种:启动,触发和停用.启动是指设置初始参数并调用中断以使看门狗开始工作;触发是指在看门狗的记数器的数值减为零以前对其恢复初始值;停用是指调用中断停止使用看门狗.在程序中应选择适当的地方对其进行触发选择时有许多讲究,程序比较大时会比较难确定,但使用它确实有很多优点不能说不容易用所以就不用
几乎所有的嵌入式操作系统都有看门狗任务,它的主要功能是防止系统死掉或者陷入死循环。也就是每个一定的时间就会执行看门狗任务,以reset系统.
喂狗的方式举个例子:在os任务调度的时候顺便触发一下看门狗,这样一旦任务长时间停止调度系统就会复位,这个功能实现起来很简单,并不需要应用程序多操什么心。
看门狗在启动的时候一般都会设置超时时间,超时时间按照一定的频率递减,减到零就复位,所以得定时将一个计时器更新到最大,防止减小到零。超时时间初始化时一般都是固定好的。
看到这里,你是否已经对看门狗定时器有个比较深入的了解了呢?欢迎大家留言发表高见,大家一起交流学习!
22:46:00  
我先收藏了, 明天白天认真看。
16:14:54  
自平衡车系统中是否值得用看门狗来提高软件的稳定性呢?
助理工程师
10:42:57  
以前确实没有使用过看门狗
Powered byArduino看门狗问题,求助_百度知道}

我要回帖

更多关于 看门狗出现问题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信