STC单片机看门狗程序的应用解析
若失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
以下是STC单片机看门狗(Watchdog Timer, WDT)程序的应用解析,主要内容包括工作原理、配置方法和使用注意事项:
一、看门狗的核心作用
本质:独立的硬件定时器计数器,用于检测程序运行异常(如死循环、跑飞)。
工作原理:
- 使能后计数器自动递增(无需软件干预),超时未"喂狗"则触发单片机复位。
- 程序需在超时前通过喂狗(重置计数器)表示运行正常。
通俗比喻:定时"炸弹",正常运行时需每隔一段时间"拆弹"(喂狗),程序卡死则"爆炸"(复位)。
二、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 关键位:
EN_WDT(bit7):1=使能看门狗CLR_WDT(bit6):写1清除计数器(喂狗)PS2/PS1/PS0(bit2~0):预分频系数,决定超时时间(如下表)。
| 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(); // 主循环末尾喂狗
}
}
三、喂狗策略设计要点
-
位置选择:
- 放置在主循环中(确保每次循环至少喂一次)
- 避免在中断、阻塞函数(如
delay(10))或分支中遗漏喂狗
-
超时时间计算:
公式:Timeout = (12 × PreScaler × 65536) / Fosc- 例:
Fosc=12MHz, PS=1/64→(12 × 64 × 65536) / 12e6 ≈ 0.42s
- 例:
-
避免过早喂狗:
超时时间应 > 单次主循环时间,但 < 最大容忍卡死时间。
四、实际应用场景
| 场景 | 看门狗作用 | 喂狗策略 |
|---|---|---|
| 主循环结构 | 防主程序卡死 | 主循环末尾喂狗 |
| 多任务轮询 | 防某任务阻塞导致饥饿 | 每个任务执行后喂狗 |
| 中断+主循环 | 防中断丢失或主循环阻塞 | 主循环喂狗(中断中不宜喂狗) |
| 低功耗模式 | 待机时禁用看门狗 | 唤醒后重新初始化 |
五、常见问题解析
-
异常复位问题:
- 现象:单片机频繁复位。
- 排查:
- 检查喂狗间隔是否小于超时时间
- 确认
WDT_CONTR配置是否正确(分频值) - 避免在中断服务函数中喂狗(中断可能正常执行而主程序卡死)
-
如何判断复位源?
if (ISP_CONTR & 0x20) { // 检测复位标志位 ISP_CONTR &= ~0x20; // 清除看门狗复位标志 // 看门狗触发的复位 } -
禁用看门狗:
WDT_CONTR = 0; // 关闭看门狗
六、高级技巧
- 独立看门狗 (IWDG):STC部分高端型号(如STC8H)支持独立时钟源的看门狗,抗干扰更强。
- 窗口看门狗:限定喂狗时间窗口(需在特定时间段内喂狗),防止程序紊乱后提前喂狗。
通过合理使用看门狗,可显著提升STC单片机在复杂环境下的可靠性,建议在工控、车载、物联网等场景必选配置。
什么是模拟看门狗?模拟看门狗有什么用处?
看门狗大家应该再熟悉不过了,一旦忘记喂狗就会导致单片机复位,而在大部分stm32中都存在两种类型的看门狗,Independent watchdo
2023-11-22 09:40:29
STC15W201S系列单片机 实现外部电路的软件看门狗程序设计
STC15系列单片机内部也引进了此看门狗功能,使单片机系统可靠性设计变得
资料下载
xymbmcu
2021-11-18 11:21:03
stc单片机看门狗的运用
STC单片机是一款增强型51单片机,彻底兼容MCS-51,还添加了新的功用,比方新增两级接连优先级,多一个外接连,内置EEPROM,硬件
2020-07-12 09:37:33
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 芯片的工作原理是什么?
- ssd是什么意思
- 什么是蓝牙?它的主要作用是什么?
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- dtmb信号覆盖城市查询
- 怎样挑选路由器?
- 华为芯片为什么受制于美国?
- 元宇宙概念股龙头一览
- type-c四根线接法图解
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- BLDC电机技术分析
- 复位电路的原理及作用
- dsp是什么意思?有什么作用?
- iphone13promax电池容量是多少毫安
- 苹果无线充电器怎么使用?
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 传感器常见类型有哪些?
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机