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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言- a' w! U4 {' P9 N4 L; Z" ^4 r
- S4 t+ b( p& j2 u* i' _
今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。: S/ [! n: u( S9 I# c" s

" F7 _) b. g! ]" |  y& [总结一下二者的区别:
! v0 `7 D4 F+ m. g  {2 ?  j. }  V& C8 c
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR; I4 f4 i1 c' @# g
5 l. _) g+ [  x
2)、IWDG没有中断,WWDG有中断
0 t% M0 R" ^. w) a+ ]8 b% H) d- V. y; z, T
3)、IWDG是12位递减的。WWDG是7位递减的
9 n) X# W8 M6 b# a0 i+ Y  u* G# b+ a) j3 D
4)、IWDG只有下限,WWDG有下限和上限6 y4 r6 t5 E& f+ T1 m+ j

  y5 H8 d, W* z' ^/ e7 |5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。/ G1 L& {6 v% ~% r, w" ?$ t
+ d4 J/ C: w+ x$ ^* k+ Q5 k
看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。
) g* w6 @3 v5 v. D2 y+ y+ f( G  M/ A* L! h4 T7 ?( w1 h
本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。" E, }( h) v" S
* @3 w! ?  q+ K, w2 t
内容讲解4 j( S, T' G) K  ?/ |4 L, P
0 a; q: G7 [4 b1 e- o
工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。7 V7 j; u$ w6 I: q, u( m9 F# U. e

" c, F7 {5 C4 ~: f- Q: A" J* z  gWWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。
( ~8 P- V) a! |& Q
8 [, ^$ _: L0 q$ X+ ^7 ]( t# i: K提供的工程简单明了,详细中文注释,方便自己方便大家。: f+ `, h# ^) {7 I; u" G

% c" W+ T7 m% I  a7 g; C关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:8 ?- J$ ^+ g  T; f
: S, z' t. w! j
一、IWDG的配置
: Z2 b9 ]1 e/ O* _5 V" G
+ k6 }% `: r! j& _  I
20160517225637401.png
1 w& n! a9 r' _

4 m# f" @, p6 ^: E" @
20160517225641035.png
& P+ R% E/ W& \
! h) c, o8 R) G: L& f& r
该函数位于IWDG工程的main.c文件下面;
: T6 \* v) T, p' O0 H2 T* h; p+ N( }! E& s, ~4 J! ]/ I( U
提供的框图为见资料。' V( M( A0 h) a1 T6 K' m

  c0 Z' r) j4 @. U, O: \  \0 X我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,4 s$ E/ G+ [7 G5 |" \

4 }: Y5 G/ D* p0 x2 J% ~0 Z! U而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。
2 C5 S. n  |: [  j6 |
5 [/ K+ S* T& R9 e/ V7 O* j二、WWDG的配置5 Q4 Z, H; Z, n7 B  _+ p, [: X

6 b  Z7 @% X$ W3 Q. K5 {# x" f, Y' k
20160517225657394.png
' O6 w3 s4 X  |' z  Y- \) k; d
" j) j+ E2 O1 Y& h/ O
20160517225702957.png

+ t+ b# C+ D* o* W& N, b& ~7 K$ C
1 R$ \  m! D9 p+ c. _. X, W1 @
) D% B5 g- j2 h- r0 H+ U4 b
该函数位于WWDG工程的main.c文件下面;! y* ]9 X7 ^( Z3 l$ e; U
. d1 C# F- t' O6 \2 H
提供的框图为见资料。1 m1 f4 U1 l& u

8 P7 r* l2 Q0 `. y这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。
+ O( K7 S& O! i/ ~
) T  N' l5 h: p" B' P. E2 J这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。  s' ]/ c: |; v# w% \2 v" ~! D$ m

  A) h* y/ U' }- o* _三、WWDG主函数
6 Z$ d0 v' r: {4 H5 o3 i" w" ?% j% O8 o  C7 N
20160517225713301.png

1 Y: p  z! ^6 p) |4 O5 V: H; ]! }: ~% v" u
该函数位于WWDG工程的main.c文件下面;
9 J. F# y" N' m% r- ]! m9 D# y
" _) f5 P/ \& [% Y0 A: I0 l2 Q+ d通过串口打印的信息就可以清楚的知道系统复位了没有。2 l1 l- E2 V6 N  _: N
5 l5 L1 L0 n6 k5 F- `
亲手修改来大于57ms的时间试试就知道。
6 I- N! @* i4 c" }1 i
. Z$ ~4 _$ b1 M; _# y四、今天的重点
6 r% X9 B% t  o4 ^
2 d6 q' U2 i$ jA.WWDG计数器的范围为:0x40 --- 0x7F
4 J5 n8 Z( T7 g, Z% L2 n# Y; w* ^! k7 N
B.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。( X4 M, W' X. l# \" G; S

- y; ?. @/ y" p5 E3 q4 o+ W7 UC.没有两个寄存器,编程时请细看寄存器% I3 I# J1 x" m; Y# s

! W7 ]; }8 r& P/ F6 u/ S说明6 F( D% z% B/ n6 Q8 n# T
/ u- g& g# Y( W( x+ q
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。/ f6 I9 G0 ?) C2 [

, z4 J, q' G/ C- u) G3 q
, v! k& c( B9 q, o1 c6 K
收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似分享

官网相关资源

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