
前言 窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时 WWDG 提供了一个提前唤醒中断,能够在 WWDG 计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新 WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。 问题描述 问题复现平台: STM3210E_EVAL 板8 G1 m* c6 Z$ b+ {3 T, o$ W1 s d IAR for ARM v7.70.13 i6 Q, ~. ~4 [5 u* V 问题复现程序: 基于 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples 问题描述:在应用开发过程中,WWDG 开启后,WWDG 的提前唤醒中断立即被触发,并且微控制器复位。 主要实现程序如下所示。5 C% a$ K( r+ m! p; P
如流程图所示,在应用程序正常运行时,WWDG 中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新 WWDG,导致 WWDG 中断事件被触发。在中断服务程序中刷新 WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。2 w, b: u$ m5 A1 j( t6 h8 A ![]() % ^2 B. |/ o2 B0 Q3 c, k: n* F7 L. W / l+ ?' F5 k I/ a 问题分析3 w/ @7 ^! ]3 Z7 O& C& e. ] 利用 IAR 以及 ST-Link V2 进行在线调试,在执行完 WWDG_Enable(127) 指令后,WWDG 寄存器值如下所示。 ![]() 其中提前唤醒中断标志 WDGA@WWDG_SR 被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新 WWDG 指令。此时计数器值 T=0x7F@WWDG_CR 不在窗口内(W=0x50@WWDG_CFR),而 WWDG 在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。' y5 @; [4 q! M# h8 e / U0 Y4 \% I$ Y& F; Q4 q ![]() 经过验证,针对这种情况,有两个解决方案。 解决方案一:4 C" {, ?" X3 p: W6 k1 ] 在使能 WWDG 之后清除提前唤醒中断标志位 EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
解决方案二: 配置计数器装载值不大于窗口值。如下所示。! C/ R, j3 d# b0 V3 p7 v; d# e
同时,需要确保唤醒中断的服务程序中存在中断标志位 EWI@WWDG_SR 判断语句,以避免异常。 - v$ u; z3 R7 ~: s 总结% q; [; c5 ~) ?/ |6 V WWDG 不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于 PCLK1,在STOP、STANDBY 低功耗模式下,WWDG 功能被停止。 ! y" h, {' D& n. N, O |
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命
从STM32 MPU产品看嵌入式系统中微处理器的新变化