看门狗你确定会用了?(经验干货满满)

看门狗?

看门狗(watchdog)-字面上的意思就是一条看门的dog,如果一切正常dog就不回叫,如出现异常dog就会叫,并且把你逼到门外!

其实看门狗不是什么特殊的外设,一般我们叫看门狗也叫做看门狗定时器,其实他就是一个计数器,在使用看门狗得时候给其一个值,然后计数器从0开始不断的累计(根据计数方向),在计数器到达预设值的值之前我们可以重置看门狗,简称喂狗。那么如果我们程序没有及时喂狗,当计数器到达预设值值时便会复位芯片。

好了,看门狗知识就这么多!今天的文章就结束了吗?不是的,大家也可以看到下面还有很多内容,那我这里问大家一个问题:看门狗就是程序跑飞了没及时喂狗就复位了,程序重新运行,这样有什么意义?带着这个问题继续往下看。


看门狗分类


按照看门狗实现方式分为:硬件看门狗和软件看门狗。

硬件看门狗

我们大部分单片机都会有看门狗这一个功能,不过有少数芯片没有,那些个时候我们想使用该功能我们就需要外扩对应的硬件看门狗芯片,比如MAX813等。

大体工作方式:硬件看门狗芯片会有接收单片机的置位信号和控制单片机复位的引脚。单片机可以根据看门狗芯片信号需求,可以通过io口进行喂狗;如果程序异常,看门狗会由于收不到单片机给的信号而发出单片机复位信号给单片机,让单片机进行复位。

(如果我们单片机存在watchdog其实也是实现类似的原理都属于硬件看门狗)

软件看门狗

我们都知道看门狗其实就是一个定时器,不过当定时器到达系统就会复位,那么我们完全可以采用我们普通的定时器进行模拟。

大体实现方式:定时器模拟,我们在主程序中喂狗,就可以对定时器进行计数器清零即可,当我们没有及时喂狗,会进入定时器中断,在中断中我们可以触发软件复位,或者通过程序跳转到程序入口处。

软件watchdog的缺点是其本质上也是软件,可能当遇到中断无法触发的异常,复位MCU就会失效。

 

从依赖性角度:看门狗也可以分为独立看门狗和窗口看门狗,独立看门狗不受系统影响有自己内部独立的时钟源等,监控整个系统异常。而窗口看门狗主要是监控软件上的错误,且其时钟来源于控制器的时钟。下面重点讲讲窗口看门狗:

窗口看门狗

独立看门狗在0-重载值之间都可以进行喂狗操作,这样如果程序跑飞反复在喂狗,这样程序无法复位。所以就有了窗口看门狗,窗口看门狗存在喂狗窗口上限和下限,喂狗只能在窗口里才能喂狗,其他时间喂狗都会复位。


看门狗如何使用?

1)一定要注意并不是所有的系统都适合使用看门狗,比如说在我们的比较精密的控制系统,一旦我们程序除了一些小异常而导致芯片复位,可能会导致系统时续混乱而造成较大得设备损害!

2)对于看门狗一般用在,比如温控系统,显示系统等复位系统对整个系统影响不是很大的延时系统等!这样能够在系统异常后复位系统让系统继续运行。 

3)对于部分MCU在看门狗复位之前会出发一个中断服务函数,给程序最后进行喂狗的机会。这个是系统给我们的机会,我们可以对当前MCU的状态进行保存等日志信息记录,供软件研发人员进行系统的分析。

4)同时对于喂狗每个人持有不同的态度,有些人认为需要在主程序中喂狗,有些则认为需要在中断里面喂狗;不过在中断里面喂狗存在一个问题是,对于MCU主程序处于死循环的时候,而我们的中断服务函数可以正常运行,这样无法出发看门狗复位。

所以常用做法是,通过中断置位相关标志位,然后主程序检测标志位进行喂狗操作,至于更加强大的看门狗机制,我们需要在实际的项目中根据需求来制定相关策略。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/466394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自定义GridView 介绍

GridView 是Microsoft DataGrid(VS2003版本)的一个替代品,它继承了DataGrid的很多优点,同时也继承了它的很多缺点,我们在方便使用的同时,还是不免会产生一丝遗憾。早在2004年的时候,对DataGrid 进行了二次封装(DotNetG…

递归算法时间复杂度计算

https://blog.csdn.net/so_geili/article/details/53444816

图解,C语言数据结构,插入排序

之前写过的排序文章,放上链接给大家看看。C语言,谁都能看得懂的归并排序高中新生开学,需要进行军训,军训的时候,教官需要大家把按高到低排队排好。先随机找到一个比较帅的男生做排头。然后第二个人过来跟这个男生比身高…

十大经典算法 - 转载

十大经典排序算法最强总结(含JAVA代码实现) 最近几天在研究排序算法,看了很多博客,发现网上有的文章中对排序算法解释的并不是很透彻,而且有很多代码都是错误的,例如有的文章中在“桶排序”算法中对每个桶进…

7E加码解码

// // 加密单个字符 uint8_t* hdlc_encode_buf(uint8_t *buf, uint8_t c) {switch (c){case 0x7E:*buf 0x7D;*buf 0x02;break;case 0x7D:*buf 0x7D;*buf 0x01;break;default:*buf c;break;}return buf; }// // 加密字符串 static void encode_process(uint8_t *encoded_bu…

我们应该学习什么 java、C#还是C++(VC)

来源:http://www.itcast.net/community/view/482 此文仅代表个人观点,欢迎讨论。 很多学员有这样的问题:我们应该学习什么语言,java、C#还是c? 好像很多公司都找会VC的人,java和C#有用吗&…

读写ini文件

读写ini文件 WritePrivateProfileString https://blog.csdn.net/wuguai4/article/details/7287346

首个开源 Linux 系统登陆火星,占有率超 Windows,一同登录还有一款安卓手机芯片...

来源| 量子位 作者 | 贾浩楠 萧箫 公众号 QbitAI“确认着陆!毅力号安全到达火星表面。”就在昨日凌晨4点55分,美国“毅力号”不经变轨,直接冲入火星大气层,最终成功着陆。“毅力号”成功着陆后,很快传回了首张图片。…

PL/SQL包(Package)

包(Package)的主要作用是用于逻辑组合相关的PL/SQL类型,一旦创建了包,包就会被存储在Oracle数据库中。 包由以下两部分组成: (1)包规范(Specification):主要是…

VS2005(c#)项目调试问题解决方案集锦

1.检测到有潜在危险的 Request.Form 值原因: (1)在提交数据的页面或webconfig中没有对validateRequest的属性进行正确的设置 (2)HTML里面写了两个<form>引起解决: 方案一&#xff1a; 在.aspx文件头中加入这句&#xff1a; <% Page validateRequest"false"…

TQ210——TFTP裸板程序下载

TQ210——TFTP裸板程序下载 1. 直接下载u-boot.bin到内存运行&#xff08;使用DNW中的的210USB启动下载&#xff09;,在DNW中输入命令可以直接查看修改u-boot.bin 2. 通过tftp下载你需要下载的程序到内存下载示例: tftp 30000000(指定程序led_on.bin下载到内存中的30000000地址…

看了这动图,你还会相信眼睛吗?

面对下面这张动图&#xff0c; 你看到的是两个顺时针旋转的黄蓝相间的圆环&#xff0c;在中心箭头的指引下做上下左右运动、扩展、收缩。稍微留神一下&#xff0c;你会发现好像这应该是收到箭头的暗示所产生的幻觉。▲ 圆圈看起来跟着箭头移动和变化为了证实这个错误的起因&…

Web页面在桌面上显示的后台基本步骤

一个Web页面如何出现在你的电脑屏幕上,以下是幕后的基本步骤: 例如访问&#xff1a;地址是http://www.osssi.com/article/1/120 的web页面。 浏览器把URL拆分成了三个部分: >协议&#xff1a;http >服务器名称&#xff1a;www.osssi.com >文件名&#xff1a;artic…

WDS远程安装

WDS远程安装1.创建可启动 Windows PEa&#xff09;安装Windows AIK软件&#xff0c;免费下载700多Mb&#xff09;运行 copype.cmd 脚本&#xff0c;以创建本地 Windows?PE 构建目录。例如&#xff0c;在命令提示符下&#xff0c;键入以下内容&#xff1a;cd Program Files\Win…

TQ210——下载总结

TQ210——下载总结 学习方法:(分阶段学习)-----内核学习是一个长期的过程 1.学习使用内核提供的接口函数 (涉及到很多操作系统知识,编程规范) 2.找到一个函数如do_fork来学习进程管理模块 3.通过kmalloc函数来学习进程管理,通过do_irq学习中断管理 1.U-BOOT配置与烧写常用命令…

解剖8051内核如何进行多任务切换

最近在玩新唐单片机&#xff0c;这个跟我之前用的51内核是一样的&#xff0c;然后今天觉得跑下多任务&#xff0c;自己研究了下&#xff0c;跟几个同学还讨论了&#xff0c;发现有些人对切换过程还不是十分明白&#xff0c;所以发个文章出来。直接上代码#include "MS51_16…

孙鑫6菜单

孙鑫6&#xff0c;遇到的问题解决方法 https://blog.csdn.net/caichao1234/article/details/8431921 C中 error C2593: “operator ”不明确的错误解决方法 https://blog.csdn.net/yaosir1993/article/details/52497890?utm_sourceblogxgwz4

java与.net平台之间进行RSA加密验证

RSA加密算法虽然不分平台&#xff0c;标准都是一样的&#xff0c;但是各个平台的实现方式都不尽相同&#xff0c;下面来我来说说java与.net平台之间该如何进行RSA加密验证&#xff0c;即java端加密-》.net端验证和.net端加密-》java端验证。我对RSA算法也只是停留在应用的层面&…

渡虎谷告诉你CSS的结构和规则

基本语法规则选择符任何HTML元素都可以是一个CSS1的选择符。选择符仅仅是指向特别样式的元素。例如&#xff0c; P { text-indent: 3em }当中的选择符是P。 类选择符单一个选择符能有不同的CLASS(类)&#xff0c;因而允许同一元素有不同样式。例如&#xff0c;一个网页制作者也…

阿莫电子为啥越来越差?

我是在上大学接触到这个论坛的&#xff0c;当时我们创新基地的学长们都注册了这个论坛的账号。记得有一次看见我旁边的学长在浏览一个技术论坛&#xff0c;我就问「这个是什么网站&#xff0c;看起来好牛逼的样子」。我记得他说了一句「阿莫电子你都不知道&#xff0c;你是不是…