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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言. s& P: b) b& _5 F

. w+ h, F2 H" q7 F今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。
4 g1 g9 `4 f2 b3 A% E1 H, x/ c4 v! `. y+ [( }6 L0 l. [% _
总结一下二者的区别:3 q4 u. P7 n$ o, @7 w! X. z$ G

; b. h# o+ V3 g9 g1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR2 V' B" m" K7 w; h
" H2 b' Y. x3 \  A# ^
2)、IWDG没有中断,WWDG有中断
/ I9 G" ^. L( P8 C! I, a8 J4 X) z' y* P2 a/ B
3)、IWDG是12位递减的。WWDG是7位递减的
' W1 Q) w% ^0 h
2 v0 b) Z. O4 k0 b3 o9 \4)、IWDG只有下限,WWDG有下限和上限
7 |) I  J+ w( F! B; G) {7 @; S/ g5 I. _; T5 F' R! F& K
5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。" ]! j. a  `6 d% C3 W% B
3 {1 I. j9 U- r" @# }0 M  U
看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。
( Q; }: H5 ?( ]$ e: ~
; @& t, ?! a& M8 \0 W/ D本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
8 |" ?! w; e+ k) n3 J7 p; F& v
7 [: B" R& J4 c# E- B" {# ^内容讲解6 r; e0 O* P& w: }, @- v' \

3 T# b3 n: g' D0 t( j+ G$ O工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
0 ]* z9 r% R# F. y" c4 _
: V1 C2 k6 y8 B  K! S; u7 q1 BWWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。0 b& Q0 g6 X& A

7 @% `* T/ ?( N  C提供的工程简单明了,详细中文注释,方便自己方便大家。
2 d% U- X1 |) h& h* {: N
8 t4 U, z" ?* Y关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:  Q+ B8 b% Z6 P2 a- b

) X$ z: i3 W3 z一、IWDG的配置6 A+ U* C: b6 ?: \. L9 h
, L5 x* y5 C8 T" K3 X
20160517225637401.png

& z& b" m- X% u) a( ^7 M  ]. T/ L# q# W1 _$ J# J) u  ~
20160517225641035.png

: W1 v+ L, ?: T3 h! V: Q* q! s2 p2 e/ @* i" s: i
该函数位于IWDG工程的main.c文件下面;0 \. u; A6 |2 T

! l5 Y; k7 K: H& N  n" u: M9 S4 I提供的框图为见资料。
2 U3 L; V, I# {/ F3 K
0 |" R! x2 ?! V8 l% p我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,
* v. {  V6 k8 L, L: w! F
$ e2 k/ \- c! _/ }9 U3 ~而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。% X& o) Q' H0 K$ Z% \- ?
4 u4 ]6 s% V( q: J
二、WWDG的配置
# C/ Q2 f, c8 I6 \* L  i% l5 q. v/ m$ F0 T, M6 h
20160517225657394.png

0 M3 G1 {; E- d) A! ?
. u; X* x; h1 l3 m
20160517225702957.png

; r! D8 P: ]! [% X

% C5 }) G0 m# a! y& y: \
/ \3 i9 R2 Q8 k% V# @+ ]9 T该函数位于WWDG工程的main.c文件下面;
' d6 \9 d# n5 `7 |- R1 Y
- P2 I3 `$ _" d- V4 ]. L提供的框图为见资料。
( s4 |2 t3 C+ m3 J1 t  v
. ?6 P( L% `2 ?8 g这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。$ O2 o9 q1 M" x3 K9 o+ u; U6 U
5 C# J* z' L8 R# _5 T& l
这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。
  z2 [5 g: R4 }4 y$ `4 H7 O8 w, r1 O  ~5 m- v' I! b
三、WWDG主函数
9 I8 G, P9 ?* b" Z9 V
( L0 @1 ^; P/ V
20160517225713301.png

; d8 E! M+ b$ a# X* B( r
( V, ]4 \5 ~; J( I+ s0 U$ e5 S该函数位于WWDG工程的main.c文件下面;$ f) a1 b" n  T3 h
& J1 n6 [0 c* s( j8 Q5 u
通过串口打印的信息就可以清楚的知道系统复位了没有。
. ]/ S! g: T: L. d! p& u" J( z' p; L) z4 z: |# h
亲手修改来大于57ms的时间试试就知道。9 \0 V/ S4 G& A

; `- t/ I/ Y6 ~( F四、今天的重点
: U" D7 m* Z  L2 M' ^) G# ~1 ~1 r$ C! j# s
A.WWDG计数器的范围为:0x40 --- 0x7F
9 k" _! s7 Q; G1 M7 D# p6 A4 v/ Z" }6 `" j2 p1 W5 p
B.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。
7 y$ j/ A) V: J! h; {% w8 T8 B/ x' D8 c9 y3 d! g, N
C.没有两个寄存器,编程时请细看寄存器) i1 P+ J) P: F) l9 s# z+ w

" ~- O% W! B8 N: v说明
7 \6 N: N/ `8 `" k6 R9 A; X3 }8 ?  w$ N; J! q
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。* J) o  U# P# j7 t: [
# h& r8 u4 P0 b+ k9 K

( w  S5 Y4 r# r* A- _
收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版