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

RTOS和看门狗 (Watchdog)

只要是软件,就一定有 Bug。 只要是电子设备,就一定会被强电磁干扰打挂(比如 PC 指针跑飞,跳到了空地址死循环)。

当 CPU “发疯”的时候,谁来按下复位键? 这就是今天我们要讲的主角——看门狗。这看起来是一个很简单的外设,但可能很多的工程师都用错了

为什么在中断里“喂狗”等于没喂?

看门狗(Watchdog Timer, WDT)本质上是一个独立的倒计时计数器。

  • 规则:假如你设定了 1000ms 的超时。如果你的程序没有在 1000ms 内向它写入特定数值(喂狗/Reload),它就会归零,并触发MCU 硬件复位

听起来很简单?那我们一起来看看用法。


1. 独立看门狗 (IWDG) vs 窗口看门狗 (WWDG)

STM32(以及大多数现代 MCU)通常配备了两只狗。它们的性格完全不同。

1.1 独立看门狗 (IWDG - Independent Watchdog)

  • 时钟源:LSI (Low-Speed Internal)内部低速时钟(通常 32kHz 或 40kHz)。

  • 特点:

    • 独立:即使 MCU 的主晶振(HSE)坏了,或者 PLL 锁相环挂了,导致系统主时钟停摆,IWDG 依然能独立工作,把系统复位。

    • 精度低:LSI 的温漂很大(30kHz ~ 60kHz 都有可能),所以 IWDG 适合做“大尺度”的监测(比如 1秒、5秒)。

  • 用途:防止程序跑飞、死循环、硬件晶振故障。

1.2 窗口看门狗 (WWDG - Window Watchdog)

  • 时钟源:APB (PCLK)系统总线时钟分频。

  • 特点:

    • 窗口机制:这是它名字的由来。它不仅规定了“不能太晚喂”(超时复位),还规定了“不能太早喂”

    • 精度高:跟随系统时钟,非常精准。

  • 用途:监测程序执行流程是否过快(跳过逻辑)或过慢。通常用于安规要求极高的场合(如汽车 ABS、医疗设备)。


2. 致命误区:千万不要在定时器中断里喂狗!

这是新手最容易犯的错误:

“我看门狗设定了 1s 超时。为了省事,我在 SysTick 的 1ms 中断里,或者一个专门的 100ms 定时器中断里写了一句HAL_IWDG_Refresh()。”

为什么这是错的?

  • 场景:你的main()函数里有一个while(Flag == 0);等待逻辑。有一天,传感器坏了,Flag 永远为 0,主程序死锁在这里了。

  • 现象:虽然主程序死了,但中断(Interrupt)依然能响应!定时器依然在欢快地跑,每 100ms 喂一次狗。

  • 结果:看门狗觉得“我很饱,系统很正常”,系统实际上已经变成了植物人,永远不会复位。

专家法则:只允许在主循环(Main Loop)或低优先级的任务中喂狗。只有当“大脑”清醒时,才能去喂狗。


3. 高阶策略:多任务系统的“逻辑看门狗”

如果你的系统里有 3 个任务:显示任务、电机任务、通信任务。 如果你只在main循环的末尾喂狗,可能会出现:电机任务死锁了,但显示任务还活着,主循环还在跑,狗被喂了,电机却烧了。

我们需要设计一种**“任务签到”**机制。

实战代码 (Task Monitor)

// 定义任务标志位 #define TASK_FLAG_DISPLAY (1 << 0) #define TASK_FLAG_MOTOR (1 << 1) #define TASK_FLAG_COMMS (1 << 2) #define TASK_ALL_ALIVE (0x07) // 111 static uint8_t g_TaskSignaled = 0; // 1. 各个任务定期汇报 "我还活着" void Display_Task(void) { // ... 业务逻辑 ... g_TaskSignaled |= TASK_FLAG_DISPLAY; } void Motor_Task(void) { // ... 业务逻辑 ... g_TaskSignaled |= TASK_FLAG_MOTOR; } void Comms_Task(void) { // ... 业务逻辑 ... g_TaskSignaled |= TASK_FLAG_COMMS; } // 2. 主循环统一检查 void Main_Loop(void) { while(1) { Display_Task(); Motor_Task(); Comms_Task(); // 核心逻辑:只有所有人都签到了,才喂狗 if (g_TaskSignaled == TASK_ALL_ALIVE) { HAL_IWDG_Refresh(&hiwdg); g_TaskSignaled = 0; // 清空标志,等待下一轮 } else { // 如果某人没签到,这里不喂狗。 // 几个周期后,IWDG 溢出,系统复位。 } } }

如果是 RTOS 系统,可以建立一个低优先级的“看门狗守护任务 (Daemon Task)”,去监视所有其他任务的事件标志组。


4. WWDG 的正确打开方式:防跳过

WWDG 的“不可太早喂”有什么用? 假设你有关键的安全逻辑:

void Safety_Check(void) { Step1_Check_Voltage(); // 耗时 2ms Step2_Check_Temp(); // 耗时 2ms Step3_Check_Speed(); // 耗时 2ms // 总耗时 6ms // WWDG 窗口设定:必须在 5ms ~ 10ms 之间喂狗 Feed_WWDG(); }

故障场景:PC 指针因为干扰,直接跳过了 Step1 和 Step2,直接执行了Feed_WWDG()

  • 结果:此时只过了 0ms。WWDG 发现你喂得太早了!判定为逻辑异常,立即复位系统。

结论:IWDG 防死锁(太慢),WWDG 防跑飞(太快)。


5. 最后的挣扎:复位前能保存现场吗?

看门狗复位是瞬间发生的,就像断电一样。 我们能不能知道“我是被看门狗复位的”?甚至知道“死在哪里”?

  1. 复位源寄存器 (RCC_CSR):系统启动后的第一件事,检查RCC->CSR寄存器。

    • 如果IWDGRSTF置位,说明是看门狗咬死的。

    • 如果PINRSTF置位,说明是被人按了复位键。

    • 专家技巧:记录这个标志到 EEPROM,统计设备的“非正常死亡率”。

  2. 死前遗言 (难):WWDG 通常有一个“早期唤醒中断 (Early Wakeup Interrupt, EWI)”。 在计数器减到 0x40(马上要复位)之前,会先触发一个中断。你可以在这个最高优先级的中断里,把关键寄存器保存到 Flash 或 备份寄存器中,作为“黑匣子”数据。


总结本章

看门狗不是“开了就行”的配置项,它是系统稳定性的基石。

  1. IWDG:用来救命(死机复位)。必须在主循环或逻辑末端喂,严禁在定时器中断喂

  2. WWDG:用来体检(流程监控)。适合安规场景。

  3. 多任务策略:使用“签到制”,缺一不可。

http://www.jsqmd.com/news/294095/

相关文章:

  • 重庆思庄技术分享——oracle添加ACL(访问控制表)的步骤
  • 基于PLC控制的四路抢答器设计基于PLC的知识竞赛抢答器设计【程序与文档】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 基于PLC的生产线搬运机器人的机械手控制系统【程序与文档】(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • PLC停车场进出控制系统仿真(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • plc自动售货机设计报告+代码合集(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • 2026 权威调研|雅思网课口碑排行榜推荐 个性化提分路径与性价比解析
  • JX076_PLC在高楼供水系统中的应用
  • 005JX乘客电梯的PLC控制
  • 救命神器8个AI论文平台,本科生毕业论文轻松搞定!
  • 整体二分
  • 权威榜单|2026 雅思网课口碑排名推荐 直播课高效备考技巧拆解
  • 说说灭菌过滤器国产品牌,哪个比较靠谱?
  • 酸奶杯制造商哪家做工好,雄县普联成是优选
  • RustFS MCP server 介绍
  • RustFS Docker 部署指南 (SNSD)
  • 探讨郑州西点烘焙培训学校,新东方培训学校费用多少钱?
  • 分析浙江灌装机生产商哪家好,筛选优质之选
  • 专业的玻璃温室供应商怎么选择?
  • AI科学家Kosmos:数小时完成数月科研,引发行业热议
  • Type-C 140W一拖二,双接EPR扩展功率分配
  • 图的概念
  • 2026长春市雅思网课一对一权威测评排行榜:优质提分方案深度解析
  • 供应链进销存源码uniapp全开源ERP多仓库管理系统pc+app手机端 - 教程
  • 四川电梯广告市场洞察:口碑公司助力品牌升级,机场广告/影院广告/电梯广告/社区门禁广告/高铁广告,电梯广告价格口碑推荐
  • 2026长春市雅思培训补习班权威测评排行榜:优质机构深度解析,精准匹配高分提分方案
  • 2026长春市雅思一对一培训深度测评排行榜:优质机构精选与提分指南
  • 长春市全国雅思培训排行:2026权威深度测评,优质提分机构精选
  • 2026长春雅思培训机构权威测评排行榜:优质提分方案深度解析
  • 郑州实力强的蛋糕培训机构靠谱吗?新东方培训学校口碑不错
  • 2026年新东方烹饪学校专业排名,靠谱的烹饪培训别错过