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

窗口看门狗启动时异常复位问题

[复制链接]
STMCU小助手 发布时间:2022-8-2 19:32
前言 ) S- L4 ^' H# z# J# _' @/ E
窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时 WWDG 提供了一个提前唤醒中断,能够在 WWDG 计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新 WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。
- n# x6 J; t6 v6 R; t4 O9 ?; \, _  S% |8 A: A$ Y6 d- f% z/ G( Y

8 g( T. c! K' J' S问题描述
6 N! F" I. O- V0 F/ U2 w问题复现平台: STM3210E_EVAL 板2 C# b8 ~, E9 O* x, t
                        IAR for ARM v7.70.1
/ h' |' P6 u: Y/ M" k# C+ a! T2 F问题复现程序: 基于 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
  1. ……) Y$ P6 N7 G, E  w
  2. WWDG_SetPrescaler(WWDG_Prescaler_8);
    * y' M: S, {1 O- l
  3. WWDG_SetWindowValue(80);* Y: N  s2 K! T0 s4 J, N6 ~9 Z* w: C8 d% j% y
  4. /* 在例程基础上添加,开启窗口看门狗中断 */
    & i" w: K  l; p! T- c
  5. ……
    8 V# h0 }/ G7 Z8 i6 p! h7 \- [
  6. NVIC_Init(&NVIC_InitStructure);9 o% ~$ {5 ?% w9 p4 T
  7. WWDG_ClearFlag();
      o4 N* n" O2 X3 `9 l1 ~9 x# D) V
  8. WWDG_EnableIT();( t& G2 o7 ?* V7 n# R$ L& ~5 ^0 ~! _
  9. WWDG_Enable(127);, g4 ^% ?( N4 O
  10. ……+ U( j6 v" N$ {3 O6 r
  11. While(1)
    5 S. x2 j  q2 {! P
  12. {
    * N2 o. v. a/ M1 b0 h9 v; ~3 h
  13. ……
    * x: g; a1 b8 X
  14. WWDG_SetCounter(127);% w3 g- d8 R8 @( A% b
  15. ……) V9 J# N+ w9 F
  16. }
复制代码
$ N: s4 t' t# H9 r

) ~% w5 a6 n! N" @/ ]  N, }4 o如流程图所示,在应用程序正常运行时,WWDG 中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新 WWDG,导致 WWDG 中断事件被触发。在中断服务程序中刷新 WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。* N' c5 }( D' R/ A2 u, P! }# E
- p( B7 }( B* ?- ^- }
$ _, L; p( b2 K. T4 c: M. l
{AC[FI2`1GHD)I97@HGI4QI.png / E# H! o6 N; i

" N% E6 @9 t" c

; w8 o% q3 p! o问题分析
: w# G# Z4 s) \+ J( H利用 IAR 以及 ST-Link V2 进行在线调试,在执行完 WWDG_Enable(127) 指令后,WWDG 寄存器值如下所示。
& n: @* g8 S( f1 \' a$ U, K' d
& L. N) ^4 ~& c! |, N5 v

* k2 _: j. i2 r( I) \, s& e %JA9DE1`3L948O__3`8KV4L.png
7 s6 S; I: l  o2 o+ A: K6 Y0 k6 \, ~. s  W4 u3 c1 t
其中提前唤醒中断标志 WDGA@WWDG_SR 被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新 WWDG 指令。此时计数器值 T=0x7F@WWDG_CR 不在窗口内(W=0x50@WWDG_CFR),而 WWDG 在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。
) R$ l  e: \% ~& A" N
' r# I/ k, B0 I+ v

0 n, A" A0 m- d9 R! G MTN2J4`PQ_WERQYVZ9QD]U2.png ! z. \  W; w6 P9 L7 U" Q% K1 m  M
# |) \  O2 t! h

# K5 N9 K" D1 H7 ?+ T, S经过验证,针对这种情况,有两个解决方案。
/ n+ j: p' k+ |% t9 e/ u解决方案一:
5 Z) @, R3 ?. o. T/ T在使能 WWDG 之后清除提前唤醒中断标志位 EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
& M6 X' J7 V7 w) K1 E7 C$ z! {7 S6 ]
  1. ……
    9 z. u# X* q( B( }& p" Z2 |
  2. WWDG_SetWindowValue(80);
    ) t& [5 e3 m. I+ q
  3. /* 在例程基础上添加,开启窗口看门狗中断 */
    5 f* {& [: M+ X7 r- ~! j5 T
  4. WWDG_Enable(127);, U) ]! @: E+ y  E3 A# A/ s
  5. ……+ Z7 R, V/ ]' r, k
  6. NVIC_Init(&NVIC_InitStructure);4 Y, T! c  B0 Z0 i! ?( L/ k/ D
  7. WWDG_ClearFlag();0 ^2 E+ c* X' R7 E5 b4 ^/ L8 b# ]
  8. WWDG_EnableIT();
    ' z6 W# L2 B; h) W& B7 }( N
  9. ……
复制代码

# K' W: [1 j; G4 Q% E
9 r1 d" ~% D  j" W解决方案二:
5 R0 `6 P* u; J1 q. w配置计数器装载值不大于窗口值。如下所示。7 h8 S9 {2 o& a0 E5 a) f
  1. WWDG_SetWindowValue(127);
    " G; P/ P: k$ C- G" ]( d+ v& s
  2. /* 在例程基础上添加,开启窗口看门狗中断 */
    * e7 Y) v6 Z' L/ P
  3. ……8 C6 l# X! l7 @4 x) P; D
  4. NVIC_Init(&NVIC_InitStructure);
    $ o! u( J6 T* x2 p
  5. WWDG_ClearFlag();- a/ A% A& s! I, o3 @
  6. WWDG_EnableIT();
    / u( C6 ]( V, R' I* o! S
  7. WWDG_Enable(127);
    & D: ?- \' I% m
  8. ……
复制代码

0 k2 M4 ?1 K; U9 Q! {! z# W7 U  x
8 k% k/ u# j1 k7 C; f; p. u同时,需要确保唤醒中断的服务程序中存在中断标志位 EWI@WWDG_SR 判断语句,以避免异常。
" Q9 V3 e  c) {. b: h4 |: I
5 P- O( o1 O0 j

7 ^/ R! N; O" U! G. ~/ J0 [/ C总结
1 k1 U% f) O4 s. n+ z) X* M1 X) ]( nWWDG 不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于 PCLK1,在STOP、STANDBY 低功耗模式下,WWDG 功能被停止。3 B$ s5 G9 i1 x% Y

5 M" m5 d. g2 M. v5 L

) W& m7 ?! f/ J/ U9 W2 z/ ]; Y$ @4 o+ A完整版请查看:附件  l* q3 d& o  _

/ r& U; o' X5 Z: a5 b5 [# ^) i, ]9 p/ t# v7 j4 D; S

窗口看门狗启动时异常复位问题.pdf

下载

214.4 KB, 下载次数: 0

赞 收藏 评论0 发布时间:2022-8-2 19:32

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版