浅谈STC单片机看门狗的作用和使用成都控制器开发

news/2025/1/9 21:46:05/文章来源:https://www.cnblogs.com/yonkotech/p/18662949

有的控制器的运行环境是很复杂的,比如可能突然来个电压,突然来个浪涌,周围存在的强电磁场也可能交替对控制器造成冲击,也有可能外部器件出现错误很久不响应,这样就有可能让单片机的程序跑飞,或者进入死循环出不来,那这就完蛋了。怎么办呢?

一个简单的办法就是使用单片机内部的看门狗。现实中的看门狗的话,你要是不定时喂狗,它就咬你,单片机里的看门狗的话,你要是不定时给看门狗计时器清零或者写入特定数据,它就让单片机复位。
看门狗,又叫 watchdog,从本质上来说就是一个定时器电路,一般有一个输入和一个输出,其中输入叫做喂狗,输出一般连接到另外一个部分的复位端,一般是连接到单片机。看门狗的功能是定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号。看门狗命令在程序的中断中拥有最高的优先级。这是个很有用的功能,可以监测程序是否按照预订的顺序或者周期循环在运行,一旦出现异常就复位,可以防止单片机出现异常跑飞和死机等情况。另外,如果您需要开发定制,可联系网址:3w点yonko-tech点com 或者Q 2531二六三七26
1.看门狗有什么作用
用于防止程序跑飞,或者防止因为意外使程序进入死循环等。
2.看门狗怎么工作
当单片机看门狗运行时,假如在规定的溢出时间内给看门狗清零或者写入特殊指令(喂狗),那么程序正常按预设的逻辑和顺序运行,假如没有在规定时间给看门狗清零,那么单片机复位,程序从头开始运行。
3.怎么使用看门狗
以STC15单片机为例:
STC15单片机看门狗的使用重点就是操作看门狗寄存器WDT_CONTR。
 看门狗的寄存器WDT_CONTR
寄存器WDT_CONTR是个8位的寄存器,各位的功能如下:

 


在使用看门狗时,EN_WDT、CLR_WDT、IDLE_WDT、PS2-PS0这几个二进制位是比较重要的,其中EN_WDT用于看门狗的启停控制,CLR_WDT用于看门狗计时器清零,IDLE_WDT用于设置单片机“空闲模式”时看门狗是否工作,PS2-PS0用于设置看门狗的溢出时间。
 怎么计算看门狗的溢出时间
看门狗的溢出时间是个重要参数,因为你要在程序里小于这个时间喂狗,才不会导致单片机复位。
看门狗的溢出时间与系统晶振和分频系数有关系,部分晶振和分频值对应的溢出时间如下:

 


STC15单片机看门狗的使用步骤:
(1)根据程序循环周期、晶振,配置看门狗的分频系数(即设置WDT_CONTR的低3位B2、B1、B0),以确定看门狗的溢出时间(溢出时间见图 2),一般喂狗时间要远小于溢出时间最好。
(2)设置单片机在空闲模式时看门狗是否计数(即设置WDT_CONTR的B3位),这位0或者1其实没什么影响,毕竟在空闲模式很多功能都停了,看门狗再继续工作意义也不是很大。
(3)启动单片机的看门狗(即设置WDT_CONTR的B5位为1)。
(4)在程序里定时将单片机的看门狗计数值清零(喂狗)。假如超出溢出时间程序里没进行喂狗的话单片机将复位。
以上设置步骤,可用位运算指令对WDT_CONTR的某些位进行操作。
看门狗配置(第1-3步)也可以在STC下载软件里进行:

 


一个参考程序:
#include "STC15F2K60S2.h" //载入STC15单片机头文件
void main()//主程序
{
WDT_CONTR=0x36; //看门狗设置:0x36->二进制为0011 0110,表示打开看门狗,看门狗计时器清零,空闲模式不计数,分频系数128(在11.0592mhz下溢出时间约4.55s)
while(1)//循环程序
{
WDT_CONTR|=0x10;// 在主循环里喂狗(看门狗计时器清零),注意循环喂狗的周期不能超出看门狗溢出时间,否则复位
}
}
来解释一下以上程序的重点,程序中 “WDT_CONTR=0x36”的说明如下表:

程序中“WDT_CONTR|=0x10”表示对WDT_CONTR 的B4位与“1”或运算,即B4置1,表示看门狗计时器清零(喂狗),说明如下表:

“/”表示保持原来不变。
注意:
喂狗的方式有很多,可以主循环里喂狗,定时器里喂狗等,一般建议主循环里喂狗。要想看门狗正常工作,要正确估算程序运行时间,保证喂狗周期一般要远小于看门狗溢出时间,而且还得满足系统工作使用状况的要求。实在不行可以程序段里多处喂狗。
不同的单片机喂狗方式不一样,有的可能不是给看门狗定时器清零,有的是往指定寄存器写特殊数据,这需按其手册操作。
4.什么情况适合使用看门狗
(1)在现场环境干扰较大,容易导致单片机死机时;
(2)程序里使用了较多while, do……until等指令时等情况。
简单说,就是在单片机复位的情况下也对系统没什么影响的情况时,适合使用单片机看门狗。
5.什么情况使用看门狗要慎重
(1)重要的计时或计数情况。此时不太建议用看门狗,因为复位了,数据清零了,就没用了;
(2)使用了较多全局状态变量的时刻,如果复位会导致这些变量丢失会导致运行错误,则不建议随意使用看门狗。比如是一个加工工艺,需要一步一步按照流程来操作,此时就不能使用看门狗,因为一旦复位会导致工艺步骤丢失,会产生错误。
(3)其他不能随意复位的情况。
以上就是STC15单片机看门狗的使用要点,总之看门狗很有用,但是不能乱用,用好了可以增强系统的抗干扰能力,不至于导致系统失效,乱用的话,就嘿嘿了。

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

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

相关文章

【云计算】银行数据中心私有云平台2.0建设(来自真实案例,很有启发性)

【导读】某行数据中心私有云平台一期建设后投入使用。但在使用过程中遇到了诸多实际问题:审批流程不贴合实际情况、自动化程度较低、云平台无法与CMDB联动、裸金属纳管等。本文对问题根源进行了探讨,并分享了通过对资源管理模式、审批流程、资源部署、微服务部署等方面进行优…

markdown学习记录

markdown学习 标题 标题用“#” 字体 这是加粗(两个星号) 这是倾斜(一个星号) 加粗+倾斜(三个星号) 这是删除线 (两个~~) 引用大于号是引用分割线(“---”或“***”) 插入图片 !+[名称]+(URL)超链接 [地址名]+(网址) 我的博客地址 列表 有序用数字,无序用“-”号A…

【实用技巧】【探讨】Java 中比较两个对象的差异

1 前言 大家平时写业务代码的时候,应该能感知到哪些是基础配置数据,哪些是实例数据。比如营销里的活动信息、促销信息就属于配置型数据,基于活动带来的订单参与活动信息属于实例数据。比如一些规则信息、流程信息等类似一种版本的概念。那么版本跟版本之间的差异、以及创建…

主机与虚拟机互ping不通的解决办法

一、主机ping不通虚拟机,但虚拟机可以ping主机 解决办法:二、虚拟机ping不通主机,但主机可以ping虚拟机 解决办法: 这里说的第一点我不知道,我是虚拟机可以ping通百度,之前虚拟机有过相关配置 我这里主要是win11电脑网络连接这里开启防火墙下面简单的说明下Vmware的网络连…

Win32汇编学习笔记09.SEH和反调试

Win32汇编学习笔记09.SEH和反调试-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net SEH - structed exception handler 结构化异常处理 跟筛选一样都是用来处理异常的,但不同的是 筛选器是整个进程最终处理异常的函数,但无法做到比较精细的去处理异常(例如处理…

【Windows攻防】Windows注册表 IFEO注入

介绍 IFEO 注入攻击是一种基于注册表的攻击技术,几乎可以保证以登录用户甚至管理员/系统用户的身份执行代码。在任何你可以想象的用例中,如果你想要将你的有效载荷绑定到 Windows 平台上二进制文件的“启动”,IFEO(图像文件执行选项)可能是你最好的选择。这是一种开发人员…

[Java] 计算Java对象大小

序在Java应用程序的性能优化场景中,时常需要考虑Java对象的大小,以便评估后,进一步提出优化方案:占用内存的大小。(比如 本地内存) 对象数据在网络传输中占用的网络带宽 对象数据在存储时占用的磁盘空间 ...概述 对象大小如何计算对象大小包括俩部分的内容,对象头和对象…

并行前缀(Parallel Prefix)加法器

并行前缀(Parallel Prefix)加法器 并行前缀加法器的基本介绍 二进制加法器是目前数字计算单元中的重要模块,基础的加法器架构包括行波进位加法器(Ripple Carry Adder),超前进位加法器(Carry Look-Ahead Adder),进位选择加法器(Carry Select Adder)等。加法器的进位传…

科技风?写实风?教你设置多风格三维地图

概述 三维地图通过高度、深度、立体感等表现形式,能够真实还原地形地貌、城市建筑和空间结构。相比二维地图,它能够更清晰地展示复杂的地理数据,帮助用户快速理解空间关系,如地形起伏、建筑高度等。在实际应用中,我们可以将不同风格的三维地图作为项目的主体元素进行展示,…

【模拟电子技术】03-PN与二极管的特性

【模拟电子技术】03-PN与二极管的特性上节中有提到对PN结施加反向电压时,会使得PN结所形成的势垒增加,阻止多子到另一边。在掺杂浓度比较低的时候,外加电场加强,中间的耗尽层会加长,变成了一个粒子加速器,自由电子进去后不断加速。直到某一电场强度时,粒子加速足够大的时…

NocoBase 本周更新汇总:支持大规模数据量的导入和导出

本周更新包括:支持大规模数据量的导入和导出等。汇总一周产品更新日志,最新发布可以前往我们的博客查看。 NocoBase 目前更新包括的版本更新包括三个分支:main ,next和 develop。main :截止目前最稳定的版本,推荐安装此版本。 next:包含即将发布的新功能,经过初步测试的…

MSSQL:DBLINK连接oracle 19

无法为该请求检索数据。(Microsoft.SqlServer.Management.Sdk.Sfc)其他信息:执行Transact-SQL语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)在与SQL Server 建立连接时出现与网络相关的特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正…