看门狗定时器(WDT)的实用技巧
看门狗定时器Watchdog TimerWDT是嵌入式系统中保障程序可靠运行的最后一道防线。当程序因异常进入死循环或“跑飞”时WDT 会在超时后强制复位 MCU使系统恢复正常。然而WDT 用得不规范反而可能让这道防线形同虚设。本文结合工程实践总结四条关键技巧。一、实测 WDT 实际运行周期示波器观测法WDT 超时周期受时钟源、预分频/后分频系数、温度及器件离散性影响数据手册给出的标称值未必等于实际值。推荐用以下方法实测方法在 CLRWDT 指令前后翻转一个 I/O 引脚或驱动 LED用示波器观察该引脚波形。LED_PIN 1; // 置高CLRWDT(); // 清狗LED_PIN 0; // 置低判读要点•若系统正常运行示波器上可测得清狗动作的实际间隔周期即程序主循环的执行周期•若故意注释掉 CLRWDT可观察到 WDT 超时后复位造成的周期性重启波形从而测得真实的 WDT 超时时间。这一实测值是后续设计清狗策略的基准。二、全程序只保留一处CLRWDT原则整个工程中CLRWDT应当且只应当出现在一个位置通常是主循环的固定点。原因如下•WDT的本质要求是程序必须在超时周期之内完成一次清狗否则触发复位•若代码中散落多个CLRWDT超时窗口的起算点将变得难以追踪——任何一处清狗都会重置计数导致你无法准确判断“从最后一次清狗到下一次清狗”的最长路径是否满足时序要求•单点清狗还能保证只有主循环完整地、按预期路径执行到该点看门狗才会被清除。一旦程序卡死在中途任意环节WDT 必然超时并复位——这正是看门狗存在的意义。注意清狗点应放在主循环中“必须经过”且能代表程序健康运行的位置而不是随意放置。三、切勿在定时器中断中清狗这是一个常见但危险的反模式。先看一个典型错误做法void __interrupt() ISR(void){if (TMR0IF) {CLRWDT(); // 错误不要在中断服务程序中清狗TMR0IF 0;}}为什么不行WDT 的设计初衷是处理“不可逃脱的死循环”这类致命异常。关键在于——即使主程序卡死在死循环中定时器中断通常仍可正常触发只要全局中断未被关闭。这会造成1. 主程序陷入死循环系统功能已失效2. 定时器中断照常触发CLRWDT 在中断里被执行看门狗不断被清除3. 中断返回后程序重新回到死循环继续卡死4. 结果系统永久瘫痪但 WDT 永远不会复位——看门狗彻底失效。正确做法是把CLRWDT放在主循环中让“主程序是否健在”成为能否清狗的唯一判据。四、WDT 的使能方式配置位与软件控制WDT有两种激活途径可根据产品需求选择。方式一配置位使能推荐用于量产#pragma config WDTEN ON在配置字Configuration Bits中使能后WDT从芯片上电起始终运行无法被软件关闭可靠性最高适合对安全性要求高的量产产品。方式二软件使能SWDTEN 位在配置位中将WDT设为软件可控模式如WDTEN SW或OFF视具体器件而定然后在代码中置位SWDTEN使能#pragma config WDTEN SW // 允许软件控制// 在初始化代码中WDTCONbits.SWDTEN 1; // 软件开启 WDT此方式便于调试阶段灵活开关WDT调试器单步/断点时若WDT一直运行会频繁复位影响调试体验量产前再切换为配置位强制使能。提示不同系列器件的寄存器命名和控制细节有差异使用前请查阅对应器件数据手册的Watchdog Timer章节确认SWDTEN位所在寄存器及配置字选项。五、小结技巧核心要点示波器实测翻转I/O CLRWDT实测清狗周期与超时时间单点清狗全程序仅一处CLRWDT保证超时窗口可预测禁止中断清狗中断在死循环中仍触发会使WDT永久失效双途径使能量产用配置位WDTEN ON调试用SWDTEN软件控制一句话总结看门狗的价值在于“程序失控时一定能复位”所有使用技巧都围绕一个目标——确保清狗动作只能由健康运行的主程序发出。

相关新闻

QQ空间备份怎么做最省心?一款把数据存回本地的开源插件

QQ空间备份怎么做最省心?一款把数据存回本地的开源插件

QQ空间备份怎么做最省心?一款把数据存回本地的开源插件 【免费下载链接】QZoneExport QQ空间导出助手,用于备份QQ空间的说说、日志、私密日记、相册、视频、留言板、QQ好友、收藏夹、分享、最近访客为文件,便于迁移与保存 项目地址: https:…

2026/10/9 10:24:27 阅读更多 →
Android Selinux详解[七]--如何给可执行程序bin加标签

Android Selinux详解[七]--如何给可执行程序bin加标签

经过前面几篇文章的介绍,你应该对Selinux有一定的了解了,现在我们就来实战一下。你可能会在工作的过程遇到要给可执行程序bin加标签的需求,以下来讲解一下怎么给bin加标签1. 一个bin通常是通过adb shell bin名字拉起来的,拉起来后…

2026/10/7 10:40:14 阅读更多 →
你的抖音视频为什么总带水印?开源免费工具一键搞定批量保存

你的抖音视频为什么总带水印?开源免费工具一键搞定批量保存

你的抖音视频为什么总带水印?开源免费工具一键搞定批量保存 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback …

2026/10/8 11:44:11 阅读更多 →

最新新闻

恶意代码检测毕设实战:PE特征提取与机器学习模型训练

恶意代码检测毕设实战:PE特征提取与机器学习模型训练

简介:这份资源是一套基于机器学习的恶意代码检测项目源码,面向计算机、人工智能、通信工程、自动化等专业的在校学生与教师,也适合作为毕设、课程设计或项目立项演示的参考。项目围绕恶意代码的特征提取、向量化与模型训练展开,涵…

2026/10/13 6:58:55 阅读更多 →
入口日志参数缺失导致500故障的根因与防御体系

入口日志参数缺失导致500故障的根因与防御体系

1. 项目概述:一次典型的“入口参数缺失”故障复盘“Agent 第一句就 500,我们查了三轮:入口日志少打了一个参数”——这句话不是段子,是某次线上服务发布后凌晨两点的 Slack 截图标题。它精准击中了现代分布式系统中最常见、最隐蔽…

2026/10/13 6:58:55 阅读更多 →
代码工具悄悄上传 .git 目录?从版本库泄露到安全排查的完整指南

代码工具悄悄上传 .git 目录?从版本库泄露到安全排查的完整指南

这两年做代码安全相关的事,最怕看到的就是这句:“ZCode 疑似被抓到上传工作区/.git 记录到云端”。当时看到这个消息,我第一反应是后背发凉。做过几年开发的人都清楚,工作区里最不能见光的目录就是.git,它不仅仅是版本…

2026/10/13 6:58:55 阅读更多 →
从Java后端到Agent开发:收藏这份转型指南,抓住AI时代机遇!

从Java后端到Agent开发:收藏这份转型指南,抓住AI时代机遇!

本文探讨了Java后端开发者转向Agent开发的可能性与挑战。Agent开发涉及将企业文档转化为知识库、模型工具API集成、多步骤任务流程设计等,不同于简单的LangChain调参。虽然Agent开发岗位火热,但也存在岗位泡沫、技术栈变化快、要求复合技能等风险。建议J…

2026/10/13 6:58:55 阅读更多 →
(187页PPT)贝恩保健品Swisse商业尽职调查项目报告(附下载方式)

(187页PPT)贝恩保健品Swisse商业尽职调查项目报告(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/92962815 资料解读:贝恩保健品 Swisse 商业尽职调查项目报告 详细资料请看本解读文章的最后内容。这份由贝恩公司出具的商业尽职…

2026/10/13 6:58:55 阅读更多 →
Nginx 进阶(HTTPS / 动态站点 / PHP / 反向代理)与 ECshop 实战

Nginx 进阶(HTTPS / 动态站点 / PHP / 反向代理)与 ECshop 实战

Nginx 进阶(HTTPS / 动态站点 / PHP / 反向代理)与 ECshop 实战 本文主要讲解Nginx 进阶(HTTPS / 动态站点 / PHP / 反向代理)与 ECshop 实战,每个概念讲清「是什么、为什么、怎么用」,每条命令解释「意图和…

2026/10/13 6:57:55 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →