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

[STM32]Day14独立看门狗+窗口看门狗

WDG看门狗

WDG(Watch Dog),看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性

看门狗本质上是一个定时器,当指定事件范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号

STM32内置两个看门狗:

  • 独立看门狗(IWDG):独立工作,对时间精度要求较低
  • 窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用

独立看门狗框图

IWDG键寄存器

键寄存器本质上是控制寄存器,用于控制硬件电路的工作

在可能存在干扰的情况下,一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能,以降低硬件电路受到干扰的概率

写入键寄存器的值作用
0xCCCC启动独立看门狗
0xAAAAIWDG_RLR中的值重新加载到计数器(喂狗)
0x5555解除IWDG_PR和IWDG_RLR的写保护
其他值启用IWDG_PR和IWDG_RLR的写保护

IWDG超时时间

超时时间:T_IWDG = T_LSI * PR分频系数 * (RL + 1)

其中:T_LSI = 1 / F_LSI

WWDG框图

窗口看门狗使用PCLK1也就是APB1的时钟,默认为36MHz,经过预分频器分频后驱动计数器递减计数。T6 - T0为计数位,T6为溢出标志位,T6 = 0时表示计数器溢出。当设置CNT初值为111 1111时,如果把T6看作计数器的一部分,计数器在100 0000 = 0x40溢出;如果把T6看作标志位,计数器在00 0000 = 0x00溢出

WDGA时窗口看门狗使能位,WDGA = 1启用窗口看门狗。T6 = 0时,可以产生复位信号。

W[6:0]存放的是最早界限的计数值,写入后保持不变。每次喂狗(写入WWDG_CR)时,比较器比较W[6:0]与当前计数值T[6:0],如果T[6:0] > W[6:0]说明喂狗时间太早(注意计数器递减),比较器输出1,产生复位信号。

WWDG工作特性

递减计数器T[6:0]的值小于0x40时,WWDG产生复位

递减计数器T[6:0]在窗口W[6:0]外被重新装载时,WWDG产生复位

递减计数器T[6:0]等于0x40时可以产生早期唤醒中断(EWI),用于重装载计数器以避免WWDG复位

定期写入WWDG_CR寄存器(喂狗)以避免WWDG复位

超时时间:T_WWDG = T_PCLK1 * 4096 * WDGTB预分频系数 * (T[5:0] + 1)

窗口时间:T_WIN = T_PCLK1 * 4096 * WDGTB预分频系数 * (T[5:0] - W[5:0])

其中:T_PCLK1 = 1 / F_PCLK1

乘以4096是因为在进入WDGTB之前还经过了分频,分频系数为4096

WDGTB预分频系数 = 2的WDGTP次方

IWDG和WWDG对比

独立看门狗

按键用于阻塞喂狗

独立看门狗配置流程:开启LSI时钟(开启看门狗后系统自动开启,无需手动操作) -> 解除预分频器和重装载寄存器写保护 -> 向预分频器和重装载寄存器写入 -> 向键寄存器写入0xCCCC启动看门狗 -> 主循环中喂狗

F_LSI = 40kHz,T_LSI = 0.025ms

#include"stm32f10x.h"// Device header#include"OLED_Software.h"#include"Delay.h"#include"Button.h"intmain(void){OLED_Init();Button_Init();OLED_ShowString(1,1,"IWDG TEST");if(RCC_GetFlagStatus(RCC_FLAG_IWDGRST)==SET){// 独立看门狗引起的复位OLED_ShowString(2,1,"IWDGRST");Delay_ms(500);OLED_ShowString(2,1," ");Delay_ms(100);RCC_ClearFlag();}else{OLED_ShowString(3,1,"RST");Delay_ms(500);OLED_ShowString(3,1," ");Delay_ms(100);}// 解除预分频器和重装寄存器写保护IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);// 向预分频器和重装寄存器写入,T_LSI = 0.025ms,设置超时时间为1000msIWDG_SetPrescaler(IWDG_Prescaler_16);IWDG_SetReload(2499);// 先喂一次狗,确保重装寄存器中的值为2499IWDG_ReloadCounter();// 启动看门狗IWDG_Enable();while(1){Button_Read(Pin_11);IWDG_ReloadCounter();OLED_ShowString(4,1,"FEED");Delay_ms(200);OLED_ShowString(4,1," ");Delay_ms(600);}}

窗口看门狗

窗口看门狗初始化流程:开启时钟(开启APB1时钟) -> 配置预分频器和配置寄存器 -> 使能WWDG并写入控制寄存器 -> 主循环喂狗

#include"stm32f10x.h"// Device header#include"OLED_Software.h"#include"Delay.h"#include"Button.h"intmain(void){OLED_Init();Button_Init();OLED_ShowString(1,1,"WWDG TEST");if(RCC_GetFlagStatus(RCC_FLAG_WWDGRST)==SET){// 窗口看门狗引起的复位OLED_ShowString(2,1,"WWDGRST");Delay_ms(500);OLED_ShowString(2,1," ");Delay_ms(100);RCC_ClearFlag();}else{OLED_ShowString(3,1,"RST");Delay_ms(500);OLED_ShowString(3,1," ");Delay_ms(100);}// 开启时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);// 设置预分频和窗口值WWDG_SetPrescaler(WWDG_Prescaler_8);// 分频系数8,分频系数55 -> 超时时间50msWWDG_SetWindowValue(21|0x40);// 窗口值21 -> 30ms以后才可喂狗// 使能WWDG并写入控制寄存器WWDG_Enable(54|0x40);while(1){Button_Read(Pin_11);OLED_ShowString(4,1,"FEED");Delay_ms(20);OLED_ShowString(4,1," ");Delay_ms(20);// 喂狗,放在下面避免喂狗过早WWDG_SetCounter(54|0x40);}}
http://www.gsyq.cn/news/1514994.html

相关文章:

  • 2026年比较好的车灯透镜升级/无锡LED 透镜大灯/无锡双光透镜改装稳定供货厂家推荐 - 品牌宣传支持者
  • 2026年比较好的东莞记账报税代办/东莞个体户核定征收代办/东莞跨境电商税务代办优选企业推荐 - 行业平台推荐
  • MonkeyCode 开源治理:如何管理一个50+贡献者的社区
  • 假设检验实战指南:从p值误解到业务决策落地
  • Blender 3MF插件:从3D设计到3D打印的终极桥梁
  • 2026年碳素管/碳素螺旋管供应厂家市场测评报告 - 品牌发掘
  • 2026年广州走廊地毯采购指南:品牌对比与行业趋势分析 - 优质品牌商家
  • 外贸跟单/跨境电商卖家必看:如何用AQL 2.5标准跟工厂谈验货,避免货不对板?
  • 2026年比较好的钢结构厂房/钢结构桥梁实力公司推荐 - 品牌宣传支持者
  • 从性能故障到安全风险,现代企业数字化转型下的网络丢包运维管控指南
  • KaKs_Calculator2.0:命令行版分子进化速率分析工具,支持滑动窗口与伽马校正
  • 多维聚合实战:超越GROUP BY的数据操作框架
  • Towards AI:O‘Reilly的工程化AI知识实时出版范式
  • 告别杂乱布线:用AD20的这几个隐藏功能,让你的PCB布局效率翻倍
  • Windows堡垒机实现GBaseDataStudio多用户配置隔离的原理简介
  • Anti-recall防撤回神器终极指南:10个实战技巧掌握Android免root消息保护
  • AI Agent 真正进项目以后,最难的不是执行,而是治理
  • 2026年知名的插件电解电容/高压电解电容/铝电解电容/东莞固态电容稳定供货厂家推荐 - 品牌宣传支持者
  • OnmyojiAutoScript终极指南:阴阳师全自动托管解决方案
  • STM32F103 Keil工程:TIM触发DAC+DMA输出可调频正弦波
  • 2026年福州管道疏通服务推荐榜单:覆盖市政/厨房/卫生间下水管道疏通与管道清洁清洗专业口碑之选 - 品牌发掘
  • 乐迪信息:船舶偏航、逆行难监管?港口AI算法盒子智能识别预警
  • 语义引力框架:用几何与物理约束提升企业AI可信度
  • AzerothCore学习笔记·数据库06:conditions表——万能胶水串联逻辑
  • 智能体对话协议设计:从FIPA到大模型时代的工程决策指南
  • 2026年银川刑事辩护律师实力对比 5位资深律师深度测评 - 本地品牌推荐
  • 2026年四川抗风卷帘门市场观察:口碑较好的服务商与选购指南 - 优质品牌商家
  • 别再傻傻分不清了!一文搞懂Xilinx FPGA里那些高速接口(GTX、Serdes、Aurora)到底啥关系
  • D2DX:为经典暗黑破坏神2注入现代图形生命力的技术奇迹
  • 2026年热门的喷淋清洗机/山东超声波清洗机/山东通过式清洗机/山东缸体缸盖清洗机厂家选择推荐 - 品牌宣传支持者