登录/注册

STC单片机看门狗程序的应用解析

若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。

更多

以下是STC单片机看门狗(Watchdog Timer, WDT)程序的应用解析,主要内容包括工作原理、配置方法和使用注意事项:


一、看门狗的核心作用

本质:独立的硬件定时器计数器,用于检测程序运行异常(如死循环、跑飞)。
工作原理

  1. 使能后计数器自动递增(无需软件干预),超时未"喂狗"则触发单片机复位。
  2. 程序需在超时前通过喂狗(重置计数器)表示运行正常。

通俗比喻:定时"炸弹",正常运行时需每隔一段时间"拆弹"(喂狗),程序卡死则"爆炸"(复位)。


二、STC看门狗配置流程(以STC8系列为例)

1. 初始化看门狗

#include "stc8.h"

void WDT_Init(void) {
    WDT_CONTR = 0x34; // 使能看门狗,预分频系数为1/64
    // 位含义: [EN_WDT=1] [CLR_WDT=0] [IDLE_WDT=1] [PS2/PS1/PS0=1 0 0]
}

寄存器 WDT_CONTR 关键位:

PS[2:0] 预分频比 典型超时时间(12MHz时钟)
000 1/2 8.7ms
100 1/64 ≈278ms
111 1/1024 ≈4.46s

2. 喂狗操作

void FeedDog(void) {
    WDT_CONTR |= 0x10; // 置位CLR_WDT位(写1清零计数器)
}

3. 主程序中的典型使用

void main() {
    WDT_Init();      // 初始化看门狗
    EA = 1;          // 开启总中断

    while(1) {
        // 主循环任务
        Task1();
        Task2();

        FeedDog();   // 主循环末尾喂狗
    }
}

三、喂狗策略设计要点

  1. 位置选择

    • 放置在主循环中(确保每次循环至少喂一次)
    • 避免在中断、阻塞函数(如delay(10))或分支中遗漏喂狗
  2. 超时时间计算
    公式:Timeout = (12 × PreScaler × 65536) / Fosc

    • 例:Fosc=12MHz, PS=1/64(12 × 64 × 65536) / 12e6 ≈ 0.42s
  3. 避免过早喂狗
    超时时间应 > 单次主循环时间,但 < 最大容忍卡死时间


四、实际应用场景

场景 看门狗作用 喂狗策略
主循环结构 防主程序卡死 主循环末尾喂狗
多任务轮询 防某任务阻塞导致饥饿 每个任务执行后喂狗
中断+主循环 防中断丢失或主循环阻塞 主循环喂狗(中断中不宜喂狗)
低功耗模式 待机时禁用看门狗 唤醒后重新初始化

五、常见问题解析

  1. 异常复位问题

    • 现象:单片机频繁复位。
    • 排查
      • 检查喂狗间隔是否小于超时时间
      • 确认WDT_CONTR配置是否正确(分频值)
      • 避免在中断服务函数中喂狗(中断可能正常执行而主程序卡死)
  2. 如何判断复位源?

    if (ISP_CONTR & 0x20) { // 检测复位标志位
       ISP_CONTR &= ~0x20; // 清除看门狗复位标志
       // 看门狗触发的复位
    }
  3. 禁用看门狗

    WDT_CONTR = 0; // 关闭看门狗

六、高级技巧


通过合理使用看门狗,可显著提升STC单片机在复杂环境下的可靠性,建议在工控、车载、物联网等场景必选配置。

什么是模拟看门狗?模拟看门狗有什么用处?

看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdo

2023-11-22 09:40:29

STM32单片机看门狗的配置方法

SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理

2023-06-22 09:07:00

STM32中的独立看门狗和窗口看门狗

和窗口看门狗。 独立看门狗:使用的是外部时钟,即使主频不工作了,看门狗也能正常工作。只要在到达喂狗时间的上限前喂狗即表示

2022-12-22 16:58:20

STC单片机看门狗

STC单片机看门狗设时钟为11.0592MHz看门狗溢出时间 = (12

资料下载 laisvl 2021-12-23 19:22:00

STC单片机看门狗验证程序

STC单片机看门狗验证程序#include<reg52.h>

资料下载 佚名 2021-12-23 19:13:44

STC15W201S系列单片机 实现外部电路的软件看门狗程序设计

STC15系列单片机内部也引进了此看门狗功能,使单片机系统可靠性设计变得

资料下载 xymbmcu 2021-11-18 11:21:03

使用单片机实现键控看门狗的C语言程序免费下载

本文档的主要内容详细介绍的是使用单片机实现键控看门狗的C语言程序免费下载。

资料下载 佚名 2021-03-27 09:27:13

使用单片机实现键控看门狗程序和工程文件免费下载

本文档的主要内容详细介绍的是使用单片机实现键控看门狗的程序和工程文件免费下载。

资料下载 佚名 2021-01-12 18:01:50

单片机看门狗工作原理

刚学习单片机的萌新都听说过单片机看门狗,但是对于其工作原理并不是很清楚,今天这篇文章将为大家介绍

2022-10-12 13:46:12

STC单片机看门狗的相关资料推荐

STC单片机看门狗设时钟为11.0592MHz看门狗溢出时间 = (12

2022-02-18 07:33:55

STC单片机看门狗验证程序分享

STC单片机看门狗验证程序#include#define uchar u

2022-02-18 06:04:31

看门狗是什么 看门狗的功能

STM32的独立看门狗概述看门狗是什么看门狗的功能独立看门狗所需的环境独

2021-07-30 08:07:19

浅析STC89系列单片机看门狗的使用及应用程序

转载:STC89系列单片机看门狗的使用及应用程序“

2021-07-23 08:31:46

STM32单片机两种看门狗的区别和配置方法

SATM32单片机的看门狗有独立看门狗和窗口看门狗之分,这两者的工作原理

2020-10-10 11:27:40

stc单片机看门狗的运用

STC单片机是一款增强型51单片机,彻底兼容MCS-51,还添加了新的功用,比方新增两级接连优先级,多一个外接连,内置EEPROM,硬件

2020-07-12 09:37:33

7天热门专题 换一换
相关标签