你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】窗口看门狗启动时异常复位问题

[复制链接]
zero99 发布时间:2016-12-19 10:59
前言& j/ V  c3 q( P: t  ]3 B" a# e
窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时WWDG提供了一个提前唤醒中断,能够在WWDG计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。
/ [7 W1 B2 Q/ a+ X4 `
  n( V, f1 @; L- f3 |! P+ o# `7 Q( k问题描述) }+ C; Y. J% o/ H: |
问题复现平台: STM3210E_EVAL板5 j7 }$ p  x- E
                       IAR for ARM v7.70.1
2 f. v8 c5 Q/ l6 U# I' O: v问题复现程序: 基于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples
; ~* z6 Y  p: m) p) H6 S问题描述:在应用开发过程中,WWDG开启后,WWDG的提前唤醒中断立即被触发,并且微控制器复位。
+ d6 P8 s1 e2 [. }" ]8 r( e# o: Z9 N- x
主要实现程序如下所示。
( P5 R. O8 d- y3 I
21.jpg 3 L1 a' o( u7 G* M5 I5 Y
如流程图所示,在应用程序正常运行时,WWDG中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新WWDG,导致WWDG中断事件被触发。在中断服务程序中刷新WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。
8 e) w! n1 L; E8 B! }" W# [
22.jpg
) Q8 M8 k: |% A5 x( ^( Z' e
+ P- w) }7 _4 q9 Y, T# `( [问题分析
. A! L. [4 L: T利用IAR以及ST-Link V2进行在线调试,在执行完WWDG_Enable(127) 指令后,WWDG寄存器值如下所示。0 C) k0 L! b; ~2 F1 D
23.jpg - h+ W/ I% N  Q2 w8 M  O) [
其中提前唤醒中断标志WDGA@WWDG_SR被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新WWDG指令。此时计数器值T=0x7F@WWDG_CR不在窗口内(W=0x50@WWDG_CFR),而WWDG在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。

, _, F! T+ l6 h1 J) h5 l
& G: Q: H* p  l( ]* T8 t
24.jpg
5 E, t, J4 D; R: O经过验证,针对这种情况,有两个解决方案。7 ?# ], n' r1 B  S: M, L0 U( w9 p# @- Q
解决方案一:
% i/ j/ h8 e0 p# i8 A5 L: B; x" _. u3 N在使能WWDG之后清除提前唤醒中断标志位EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
. o! V3 C  c4 j# d
25.jpg $ W. \3 \2 c) U1 |9 d- l& d

% T! h1 D8 N& |% _解决方案二:
! L5 V& T6 G: ^1 {  l: M配置计数器装载值不大于窗口值。如下所示。1 s, u, B( Y7 N5 A
26.jpg 6 r0 l2 L' E$ m1 ]8 W6 J7 t  c: N
同时,需要确保唤醒中断的服务程序中存在中断标志位EWI@WWDG_SR判断语句,以避免异常。$ \4 I- K& ~% g, @

: B( `; \6 q5 `1 f总结
8 _) k0 c0 }( @) s6 qWWDG不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于PCLK1,在STOP、STANDBY低功耗模式下,WWDG功能被停止。
, e# c; B# q' p
* K! a0 h, u4 Q  @8 e. J
9 B0 [6 f3 A) p/ O; O: a8 e

; u# C$ V9 i% D. r2 q

& v; F) u& j7 {( Z! U0 v+ {" l& a" C% I: _3 j* F8 j* ^

/ X( h8 x! k' X" o资料下载
. ?- ]- s* I: f- v9 Y3 C- Z2 J# Z, q
更多实战经验
, t( p2 D% S& i2 [' a. ~) I7 h3 \3 R! g! R
收藏 2 评论6 发布时间:2016-12-19 10:59

举报

6个回答
lzts 回答时间:2016-12-19 11:03:14
占位,学习了.
leo121_3006061 回答时间:2016-12-19 13:06:02
感谢分享
jackten 回答时间:2016-12-19 13:12:04
谢谢分享                           
西奥伟 回答时间:2019-6-26 15:04:24
学习了
西奥伟 回答时间:2019-6-26 15:05:33
配置计数器装载值W能够配置成0x7f吗??
zhy233090130 回答时间:2019-7-24 20:58:15
您好!我用的片子是STM32F030同样出现此问题,用STLINK仿真发现WWDG初始化未完成就复位了,请问有例程可以发我学习一下吗,谢谢!

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版