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

看门狗?

看门狗(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…

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

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

十大经典算法 - 转载

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

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

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

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

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

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

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

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

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

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

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

阿莫电子为啥越来越差?

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

使用栈实现中缀表达式转为后缀表达式和后缀表达式的求解

书籍在线网址http://interactivepython.org/runestone/static/pythonds/index.html 中文翻译书籍&#xff1a;https://facert.gitbooks.io/python-data-structure-cn/ 将中缀表达式转换为后缀表达式 中缀表达式&#xff08;上图&#xff0c;一般书写&#xff09;转换为后缀表达…

TQ210 —— 点亮LED

TQ210 —— 点亮LED 1、S5PV210 GPIO硬件简介 1.1、GPIO 【S5PV210有237个多功能IO口&#xff0c;通过设置寄存器确定某个引脚用于输入输出或者其他特殊功能】 GPIO的英文全称为General-PurposeIO ports&#xff0c;也就是通用IO接口。在嵌入式系统中常常有数量众多&#xff0…

拆解镍氢电池充电器,简单的电路设计令人震惊!

上班爱摸鱼&#xff0c;下班爱钓鱼&#xff0c;于是买了一个钓鱼机。不贵&#xff0c;几十块钱&#xff0c;带4条鱼竿。长这样&#xff1a;电池驱动&#xff0c;钓起鱼来乐趣无穷&#xff1a;惊喜的是&#xff0c;钓鱼机自带附赠的电池是可充电的&#xff0c;省下不少买干电池的…

设备底座几个常见固定方式

在运营商我们可以经常发现如下的固定方式&#xff0c;因为设备厂家的不同&#xff0c;以及机房上下走线方式&#xff0c;固定方式也有些差异。可以清楚看见&#xff0c;底座可以靠螺母进行微调使机柜高度&#xff0c;底部还有膨胀螺丝打入地板还有很多机柜是不加微调用的底座&a…

抽35块树莓派新品单片机送给可爱的你们

我是谁~公众号「嵌入式Linux」&#xff0c;深入解析简明扼要直白解释各种技术问题&#xff0c;包括但不局限于Linux、单片机、半导体、Android、C语言等等。号主从事嵌入式软件行业有10余年&#xff0c;建立了10余个技术微信群&#xff0c;整理了很多技术资料&#xff0c;欢迎大…

TQ210——时钟系统

TQ210——时钟系统 1、时钟域 一般来讲&#xff0c; MCU 的主时钟来源主要是外部晶振或外部时钟&#xff0c;比较常见的是 外 部晶振。一般情况&#xff0c;系统内所使用的时钟都是高频率的时钟&#xff0c;外部晶振一般达不到那么高的频率&#xff0c;所以一般使用锁相环电路&…

我的文章汇总

2018年文章汇总2019年文章汇总2020年文章汇总专辑|Linux文章汇总专辑|程序人生专辑|C语言专辑|Git专辑|安卓系统专辑|嵌入式我的知识小密圈关注公众号&#xff0c;后台回复「1024」获取学习资料网盘链接。欢迎点赞&#xff0c;关注&#xff0c;转发&#xff0c;在看&#xff0c…

webpack-安装

以前配置的gulpfile.js&#xff0c;随着版本的迭代更新&#xff0c;现在已经... 1.安装webpack npm i -g webpack-cli && npm i -g babel-preset-env 2.弹射出窗口&#xff08;我们未安装Git&#xff0c;或者未找到Git path&#xff0c;请配置path&#xff09; 3.再次执…

TQ210——S5PV210中断体系

TQ210——S5PV210中断体系 中断是指 CPU 在执行程序的过程中&#xff0c;遇到异常情况需要处理&#xff0c; CPU停 止当前程序的运行&#xff0c;保存当前程序运行处的必要参数&#xff0c;转去处理这些异常情况&#xff0c; 处理结束后再返回当前程序的间断处&#xff0c;继续…

高通骁龙888开始被Linux内核5.12版正式支持

在Linux 5.12内核合并窗口中&#xff0c;有很多新的硬件开始被支持&#xff0c;其中不乏一些知名产品例如高通骁龙888&#xff0c;除此之外还有一些与ARM平台和设备树有关的代码添加。来自Arnd Bergmann的各种内核拉取请求在周六晚上被合并&#xff0c;此前由于恶劣的冬季风暴阻…

Python实现比较两个列表(list)范围

Python实现比较两个列表(list)范围 有一道题&#xff1a; 比较两个列表范围&#xff0c;如果包含的话&#xff0c;返回TRUE&#xff0c;否则FALSE。 详细题目如下&#xff1a; Create a function, this function receives two lists as parameters, each list indicates a scop…