欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步

STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步

2025/4/17 13:42:12 来源:https://blog.csdn.net/liwangsb2/article/details/147028684  浏览:    关键词:STM32看门狗原理与应用详解:独立看门狗 vs 窗口看门狗(上) | 零基础入门STM32第九十四步
主题内容教学目的/扩展视频
看门狗什么是看门狗,原理分析,启动喂狗方法,读标志位。熟悉在程序里用看门狗。

师从洋桃电子,杜洋老师


📑文章目录

    • 一、看门狗核心原理
      • 1.1 工作原理图解
      • 1.2 经典水桶比喻
    • 二、STM32看门狗双雄对比
      • 2.1 参数对照表
      • 2.2 架构框图
        • 独立看门狗架构
        • 窗口看门狗架构
    • 三、独立看门狗(IWDG)深度解析
      • 3.1 关键特性
      • 3.2 配置示例代码
    • 四、窗口看门狗(WWDG)进阶应用
      • 4.1 核心特征
      • 4.2 配置代码示例
    • 五、设计实践指南
      • 5.1 参数计算工具
      • 5.2 调试技巧
    • 六、常见问题解答
    • 七、扩展应用
      • 7.1 复合监控系统
      • 7.2 看门狗高级用法
    • 八、相关资源


一、看门狗核心原理

1.1 工作原理图解

正常流程
异常状态
程序启动
看门狗初始化
程序运行中
定时喂狗
未及时喂狗
计数器重置
计数器归零
系统复位

1.2 经典水桶比喻

比喻要素技术对应
水龙头流速计数器递减频率
桶容量初始重载值
倒水操作喂狗动作
水溢出系统复位

二、STM32看门狗双雄对比

2.1 参数对照表

特性独立看门狗(IWDG)窗口看门狗(WWDG)
时钟源独立40kHz RC振荡器主时钟(PCLK1)
计数器位宽12位递减计数器7位递减计数器
工作模式停机/待机模式可用需主时钟运行
喂狗时间任意时间指定时间窗口
特殊功能自由定时器模式早期预警中断
典型应用场景基础监控/低功耗场景时序严格控制系统

2.2 架构框图

独立看门狗架构
归零
40kHz RC振荡器
8位预分频器
12位递减计数器
系统复位
喂狗操作
窗口看门狗架构
下窗口值
上窗口值
窗口期内
主时钟
预分频器
7位递减计数器
复位信号
中断预警
喂狗操作

三、独立看门狗(IWDG)深度解析

3.1 关键特性

  • 独立时钟源:不受主系统时钟影响
  • 最长超时时间:26.2秒(预分频256,重载值0xFFF)
  • 硬件看门狗模式:通过选项字节配置
  • 调试模式冻结:方便单步调试

3.2 配置示例代码

// IWDG初始化
void IWDG_Init(uint16_t reload, uint8_t prescaler)
{IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);IWDG_SetPrescaler(prescaler);IWDG_SetReload(reload);IWDG_ReloadCounter();IWDG_Enable();
}// 喂狗操作
void Feed_Dog(void)
{IWDG_ReloadCounter();
}

四、窗口看门狗(WWDG)进阶应用

4.1 核心特征

  • 精确时间窗口:必须在上窗口(0x40)与下窗口(0x3F)之间喂狗
  • 早期预警中断:计数器达到0x40时触发中断
  • 时钟依赖:需要稳定主时钟源
  • 最短超时时间:1.09ms(PCLK1=36MHz)

4.2 配置代码示例

// WWDG初始化
void WWDG_Init(uint8_t counter, uint8_t window)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);WWDG_SetPrescaler(WWDG_Prescaler_8);WWDG_SetWindowValue(window);WWDG_Enable(counter);WWDG_ClearFlag();WWDG_EnableIT();
}// 中断服务函数
void WWDG_IRQHandler(void)
{if(WWDG_GetFlagStatus() != RESET) {// 处理早期预警WWDG_SetCounter(0x7F);WWDG_ClearFlag();}
}

五、设计实践指南

5.1 参数计算工具

看门狗类型计算公式示例计算(超时1s)
IWDGTout = (4×2^prescaler) × reload / 40kprescaler=4(256分频), reload=1250
WWDGTout = (4096×2^WDGTB) × (T[5:0]+1) / PCLK1PCLK1=36M, WDGTB=3, T=54

5.2 调试技巧

  1. 利用IWDG冻结功能:在调试模式暂停计数器
  2. WWDG窗口时间测量:使用逻辑分析仪捕获喂狗信号
  3. 安全喂狗策略:在多个关键节点重复喂狗
  4. 异常处理机制:在复位前保存系统状态

六、常见问题解答

Q1:看门狗导致频繁复位怎么办?

  • 检查喂狗间隔是否小于超时时间
  • 验证时钟源配置是否正确
  • 确认未在中断外进行长时间阻塞操作

Q2:如何选择看门狗类型?

  • 低功耗场景选IWDG
  • 实时性要求高选WWDG
  • 关键系统可同时使用双看门狗

Q3:窗口看门狗窗口值如何设置?

  • 上窗口值 = 允许最早喂狗时间
  • 下窗口值 = 最晚喂狗时间
  • 典型设置:窗口值 = 0x5F,计数器初始值 = 0x7F

七、扩展应用

7.1 复合监控系统

主任务
IWDG喂狗
关键子任务
WWDG喂狗
硬件级监控
时序级监控

7.2 看门狗高级用法

  1. 系统自检模式:故意触发复位测试看门狗功能
  2. 低功耗唤醒:配合停机模式实现定时唤醒
  3. 安全认证:通过看门狗记录系统运行状态

附:STM32看门狗相关寄存器速查表

寄存器IWDGWWDG
控制寄存器IWDG_KRWWDG_CR
预分频寄存器IWDG_PRWWDG_CFR
重载寄存器IWDG_RLRWWDG_CFR
状态寄存器-WWDG_SR

八、相关资源

[1] 洋桃电子B站课程-STM32入门100步
[2] STM32官方文档手册
[3] STM32F103固件函数库用户手册(中文)
[4] 看门狗原理.pptx


💬 技术讨论(请在评论区留言~)

📌 下期预告:下一期将探讨看门狗应用程序分析,欢迎持续关注!

点击查阅🔍往期【STM32专栏】文章

版权声明:本文采用[CC BY-NC-SA 4.0]协议,转载请注明来源
实测开发版:洋桃1号开发版(基于STM32F103C8T6)
更新日志

  • v1.0 初始版本(2025-04-06)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词