STMCU小助手
发布时间:2022-8-2 19:32
|
前言 ) S- L4 ^' H# z# J# _' @/ E 窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时 WWDG 提供了一个提前唤醒中断,能够在 WWDG 计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新 WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。 % |8 A: A$ Y6 d- f% z/ G( Y 问题描述 问题复现平台: STM3210E_EVAL 板2 C# b8 ~, E9 O* x, t IAR for ARM v7.70.1 问题复现程序: 基于 STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples- h0 C' F9 \( H% l6 { 问题描述:在应用开发过程中,WWDG 开启后,WWDG 的提前唤醒中断立即被触发,并且微控制器复位。3 O& A9 |) W. s B2 T7 f 主要实现程序如下所示。. B. J1 k% N0 c; o9 C
如流程图所示,在应用程序正常运行时,WWDG 中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新 WWDG,导致 WWDG 中断事件被触发。在中断服务程序中刷新 WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。* N' c5 }( D' R/ A2 u, P! }# E - p( B7 }( B* ?- ^- } $ _, L; p( b2 K. T4 c: M. l
问题分析 利用 IAR 以及 ST-Link V2 进行在线调试,在执行完 WWDG_Enable(127) 指令后,WWDG 寄存器值如下所示。
0 k6 \, ~. s W4 u3 c1 t 其中提前唤醒中断标志 WDGA@WWDG_SR 被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新 WWDG 指令。此时计数器值 T=0x7F@WWDG_CR 不在窗口内(W=0x50@WWDG_CFR),而 WWDG 在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。
# |) \ O2 t! h 经过验证,针对这种情况,有两个解决方案。 解决方案一: 在使能 WWDG 之后清除提前唤醒中断标志位 EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
解决方案二: 配置计数器装载值不大于窗口值。如下所示。7 h8 S9 {2 o& a0 E5 a) f
同时,需要确保唤醒中断的服务程序中存在中断标志位 EWI@WWDG_SR 判断语句,以避免异常。 总结 WWDG 不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于 PCLK1,在STOP、STANDBY 低功耗模式下,WWDG 功能被停止。3 B$ s5 G9 i1 x% Y 完整版请查看:附件 l* q3 d& o _ # ^) i, ]9 p/ t# v7 j4 D; S |
窗口看门狗启动时异常复位问题.pdf
下载214.4 KB, 下载次数: 0
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版