当前位置: 首页 > news >正文

STM32学习之看门狗(理论篇)

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处

看门狗是什么意思?

看门狗本质上是一种特殊的定时器

定时器的基本功能?

单片机中的定时器基本功能是在设定一定时间后自动触发某个动作。
定时器可以根据用户预先设定的时间,在时间到达后触发相应的动作。比如,设定定时器在 100ms 后触发中断,当定时器计时达到 100ms 时,会产生一个中断信号,CPU 会暂停当前正在执行的程序,转而去执行中断服务程序。在中断服务程序里,能够编写相应的代码来完成特定的任务,像控制 LED 灯的闪烁、读取传感器数据等。

喂狗操作会发生什么?

● 系统在正常运行期间,需要在计数器减到 0 之前,通过软件向 IWDG 发送复位信号,也就是 “喂狗”。这会让计数器重新加载初始值,继续递减计数,而避免系统发生复位。

那WDG跟一般定时器有何区别?

● WDG:主要用于监控系统运行状态,保障系统的稳定性和可靠性。当系统出现软件故障(如程序跑飞、死循环)或硬件异常,导致无法在规定时间内完成 “喂狗” 操作时,WDG 会触发系统复位,使系统重新启动,从而恢复正常运行。
● 一般定时器:主要用于实现定时功能,在设定的时间到达后触发特定的事件或任务。例如,定时触发中断服务程序、产生周期性的信号、控制设备的定时开关等。

复位后程序会怎么变化?

复位后,程序会从头开始执行,CPU 首先执行启动代码(Bootloader),初始化时钟、外设、内存等硬件资源。

看门狗种类

看门狗(Watchdog Timer)是一种用于监测系统运行状态、防止程序陷入死循环或异常状态的硬件或软件机制。以下是常见的看门狗种类及其特点的总结:

看门狗分类对比表

类型工作原理触发方式应用场景优缺点
硬件看门狗独立于主CPU的专用硬件电路,通过外部晶振或RC电路提供时钟,计数溢出时触发复位信号。硬件复位(Reset)或中断(IRQ)。高可靠性系统(如工业控制、汽车电子、航空航天)。优点:完全独立于CPU,可靠性高;
缺点:需要额外硬件成本,配置灵活性低。
软件看门狗由CPU执行的一段程序代码,通过定时器中断或系统调用实现计数,超时未刷新则触发复位或异常处理。软件复位、跳转至特定处理函数或抛出异常。资源受限的嵌入式系统(如单片机、低成本MCU)。优点:无需额外硬件,成本低;
缺点:依赖CPU运行,若CPU卡死则失效。
窗口看门狗硬件看门狗的一种特殊类型,要求喂狗操作必须在指定的时间窗口内完成(早于上限且晚于下限)。超时或窗口外喂狗均触发复位。对时序要求严格的系统(如安全关键系统、实时控制系统)。优点:能检测程序跑飞或时序异常;
缺点:配置复杂,需精确计算窗口时间。
独立看门狗硬件看门狗的一种,使用专用低速时钟(如STM32的LSI),不受主系统时钟影响,确保在时钟故障时仍有效。独立时钟计数,超时触发复位。对时钟稳定性要求高的系统(如通信设备、医疗仪器)。优点:抗干扰能力强;
缺点:计时精度较低,依赖内部低速时钟。
系统看门狗操作系统级的看门狗服务,通过监控关键进程或系统资源(如CPU负载、内存使用)来判断系统状态。终止异常进程、重启服务或触发系统复位。复杂系统(如Linux服务器、Android设备)。优点:可针对特定进程监控;
缺点:依赖操作系统运行,内核崩溃时可能失效。
电源看门狗监测电源电压或功耗,当电压低于阈值或波动异常时触发复位,防止系统在低电压下不稳定运行。电压比较器触发硬件复位。电池供电设备(如IoT设备、便携式仪器)或电压波动较大的环境。优点:保护硬件免受低电压损坏;
缺点:仅关注电源状态,无法检测程序逻辑错误。
http://www.xdnf.cn/news/870517.html

相关文章:

  • 10.MySQL索引特性
  • dify中解决docx上传文件报错问题
  • 泰迪杯特等奖案例深度解析:基于量子启发优化与多尺度时空建模的港口物流智能调度系统
  • 如何应对敏捷转型中的团队阻力
  • 【位运算】丢失的数字(easy)
  • Linux进程调度:从时间片到实时任务的交响乐
  • C++——智能指针 unique_ptr
  • 【leetcode】9. 回文数
  • Hadoop大数据集群深度实践:源码分析、参数调优与自动化运维平台选型全解
  • 知识宇宙-学习篇:程序员调试思维
  • PyTest框架学习
  • docker镜像下载到本地,并导入服务器
  • spring4第6课-bean之间的关系+bean的作用范围
  • [C]extern声明变量报错:undefined reference终极解决方案
  • 《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- 第一篇:MIPI CSI-2基础入门
  • 【AAOS】【源码分析】用户管理(二)-- 用户启动
  • APx500录制波形
  • Qt Creator工具编译器配置
  • Oj系统测试报告
  • 第3章(新)Day3-Python逻辑语句
  • Java 创建线程池的几种方式
  • Python基础:文件简单操作
  • OpenCV CUDA模块图像处理------创建CUDA加速的Canny边缘检测器对象createCannyEdgeDetector()
  • 使用 useSearchParams 的一个没有触发控制台报错的错误用法
  • STL 库基础概念与示例
  • 洛谷每日1题-------Day39__P1697 [USACO18JAN] Lifeguards B
  • Vue 生命周期全解析:从创建到销毁的完整旅程
  • Redisson - 实现延迟队列
  • 通过ca证书的方式设置允许远程访问Docker服务
  • 吴恩达机器学习讲义概述