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

【经验分享】STM32F1_WDG看门狗(独立+窗口)

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言
' l* b; b0 U" C( l# V! y  k) i4 X( C- V: z' }# z6 F) z, D9 o8 u' H) X0 r
今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。, K9 I1 [: K$ m# |
) N( h/ ^% _& ^9 D
总结一下二者的区别:2 w) w+ h, h" [+ J
8 n; O! k# j' S: A$ b
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR. O( \, v' u$ K1 o% M# A) w
5 |) G% k; Z9 G( j
2)、IWDG没有中断,WWDG有中断
0 C% J5 d3 A' o- K: n! M) {* K0 ~3 C) E2 O) ]& a5 S. }9 ]8 a
3)、IWDG是12位递减的。WWDG是7位递减的$ n: R7 y- z" S$ u
. f+ g# N# K" |# i7 m
4)、IWDG只有下限,WWDG有下限和上限, G' c" V. M& @# q

( K5 a7 l- O5 w- `) w5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
. {7 O8 R; U6 o" W+ A9 \  l
4 \1 _: a/ S+ v: P看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。) F* A- F# H" \2 j" n" i6 V
2 n* y  G9 z3 ~* P) S! ]$ T
本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
) n6 Q- \  }# o& J: T7 D: l! k/ Q& m0 R
内容讲解
. v# h0 c- D8 _: e+ r

, \0 F5 Z) W+ K. \; ]3 z9 z7 a* N工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
1 J4 N" H  A: N# D0 {; g- i' N( h, ]* V
WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。* t* b( b9 T; ~% ]

4 t' @; G: D6 O2 X0 P提供的工程简单明了,详细中文注释,方便自己方便大家。! P  y9 r/ w$ P

/ L# @  \4 r6 P; v1 E$ [关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:
' n" p# ^  h" A' b, F7 [; H4 Y) m8 o4 l; ?
一、IWDG的配置9 j3 r  B5 b! F- q" ]; ?& ]

. E9 @8 O- r% [' J
20160517225637401.png
0 g# }& [- S# b+ [' R1 ^% O+ u( g* [! \3 U

6 G& I( S# ]8 T7 l: b4 y
20160517225641035.png

; w6 ]' d% t* ~5 V2 U, c6 c: _" M6 e' A! G, b
该函数位于IWDG工程的main.c文件下面;
& X. h# h4 o$ b7 I% h6 s
: s' ~6 q, z* Z* N4 I7 i提供的框图为见资料。0 k/ U* D3 W! ^
3 s4 |0 D) e9 H& i
我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,, i% U4 R$ e. ]6 k

, T7 [( ^, j+ D而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。
% k2 P( J( \5 d$ c* j. i+ [4 J# w0 W: d, b# _
二、WWDG的配置* x( A3 U2 t* o7 P9 [
5 Z: Z& W3 J! @. e* O. H$ g( g
20160517225657394.png

( O4 T) g4 M8 {1 z9 @! n
* Z" R' g; x' t
20160517225702957.png
) e/ ?# P8 S0 x' {: K

9 v) t5 `' A1 u4 J, a) a' L* }' s$ s, T7 K9 I5 D5 K* G, ?
该函数位于WWDG工程的main.c文件下面;
" L" d6 t6 g5 j) o. f) p. ^, n! ?+ h) O. l7 }6 E
提供的框图为见资料。
* N, @2 m/ H9 E9 Y/ B3 R1 t, {3 e# J) e4 v# G! {' B
这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。# ~$ _- |$ Q; N" F) y

$ z9 P& K4 ^8 o5 G  t# z这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。# E$ h- K( \4 Q2 E( K

) u% C5 r( J/ X三、WWDG主函数
9 {$ X6 c( Y! N" c
/ Y0 \" _) O$ S, J/ W$ p
20160517225713301.png
4 ]+ f* \5 J/ Q5 j6 z$ w
7 y5 L# ]9 @& B: n4 U
该函数位于WWDG工程的main.c文件下面;
: L4 i1 F& X' }1 ]' O* U2 W" I6 N: M" B. L
) T& Z2 m4 T( a4 M9 \/ h* D1 C通过串口打印的信息就可以清楚的知道系统复位了没有。
1 j2 f( G- ^6 a# M/ t8 z/ `( j4 y8 _3 g6 ?2 T
亲手修改来大于57ms的时间试试就知道。) h  W" U# B' K* `, K

. t/ Q5 J: M% h; K' s% q( E2 e四、今天的重点" t0 p, k% x; k

( P0 u+ s; x1 j, W) IA.WWDG计数器的范围为:0x40 --- 0x7F( \; z: n9 j/ w/ [

# l0 u( j5 J9 j! K7 B' D8 a3 B8 oB.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。
. Y- R, C/ Y) u# f. ?1 m7 |$ L" n$ \
  V( L4 Q( w" l9 v2 K9 JC.没有两个寄存器,编程时请细看寄存器* _! X& v! }/ f; c5 N6 R2 F, _6 L

% K7 r* g6 e9 H说明6 a" Y/ e; T- r6 i; O
0 {+ O' B/ N. k0 H) I* ]* E
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。
/ t( u$ f6 {2 h) y& X7 Q- l# J) a. s1 ~2 s2 ?
3 n% s, h  U" i
收藏 评论0 发布时间:2021-11-30 21:26

举报

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