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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言
) h( T  p* q4 _3 n
' J' w3 q+ a8 o% P) P/ v今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。9 }5 B. [/ V! ~. |! `

6 v3 a8 b; E( O& C* x总结一下二者的区别:+ v3 b" w5 ]" |8 K& `
; ]/ u8 P0 W2 G* v3 o* Z5 I
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR
' y5 P' A$ v: J; D
2 C% `. O) V- q, f$ D2)、IWDG没有中断,WWDG有中断, a& V, R! l3 E# j. B' s& h

: z& u. |  f1 n) \3)、IWDG是12位递减的。WWDG是7位递减的
, F/ U, r- Z9 f. _' a! g& P2 t" n4 Y$ A7 o& s& x
4)、IWDG只有下限,WWDG有下限和上限
2 c; I8 F$ n& B
# ]( ^. Y& j( W. |4 p5 \  O5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。: f! }7 h$ b0 D/ E- u

& g6 K4 i) ~7 H& ?4 M看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。
/ a3 E% a. o+ A# L: I" d9 \, o7 [' Y9 b4 S" r) ^# _
本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
5 f$ q% J6 B: ~. M, }, @* ^
; Q7 J2 r# s3 G2 ?' T内容讲解
, M( f% f! Z2 }  H
: f+ N2 h# e8 q! i" P. N
工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。3 m! ]8 {( N2 d% p) E0 Z

: m% ~! k, g: E& ^+ n+ s+ yWWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。( t( g2 H/ o0 J+ x3 X
; k& n2 L5 k" |9 S9 q
提供的工程简单明了,详细中文注释,方便自己方便大家。  P  W1 C% L# v5 w* }

: {/ d- C( I3 `- d8 y* ?% [关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:/ T, C% N- i: T8 E# P# o( ^

' [6 P) n' N8 S$ B一、IWDG的配置
4 b+ m9 {4 J) k+ q0 ]6 [+ ]: X. `6 u  A
20160517225637401.png
2 B; h  A. j  f* E
" [' K% s3 ?& ?5 Q
20160517225641035.png
5 i) i7 I- ]8 i! R2 h* x

0 [1 m2 y3 L3 i4 c+ q% K该函数位于IWDG工程的main.c文件下面;- o' u! c5 O+ l4 m

& z- S4 Q5 [/ ]0 f, t& d提供的框图为见资料。1 e( ~" ]7 J7 y% K

+ u' W. X3 r( l2 c/ w5 A% P我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,
5 x! h, B$ A$ ^- A8 p7 F. Z9 S+ h* \' R" u: n4 U( b9 C& `
而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。
& k" e7 s- }! ?  d
. y2 E6 ?% P  b$ i二、WWDG的配置
; M: l- V2 Y# D) p  U1 J/ h
, J8 k8 j" V8 k! U' x) |& S4 F
20160517225657394.png

# S/ c; C$ l  `6 V4 Z7 y4 J6 }
2 r, P1 j0 Z% j- q; B# F
20160517225702957.png
; W1 w4 K) p9 a- \8 O/ z2 v

# g* y) B% C: ]) }* l7 i4 h* W* N
3 G% {( X3 G- o  q该函数位于WWDG工程的main.c文件下面;
  x- Q. y! \4 y( r! Y
$ f3 V( Z" v- f$ A/ h' F提供的框图为见资料。: k# i2 p0 O; L& g$ o
1 A" z0 M' [5 T$ a# x3 l# t; w+ j! b
这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。: x; U! ^# i! z/ B

9 D* B1 J! s6 j" j6 M这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。
1 j* q$ F# v6 ^1 T. Y
/ K6 |- U! W/ |. _8 F! g' I三、WWDG主函数
! ^! U+ w! m5 j8 e/ p1 u
1 S' \* E* m  _3 K8 i0 a6 o7 v
20160517225713301.png
3 C3 O7 G+ j7 j

; r& ]+ b: |8 T/ }2 _. r该函数位于WWDG工程的main.c文件下面;
* L' I4 z' ~+ ?4 z2 w4 B
+ O: L  w$ J& V通过串口打印的信息就可以清楚的知道系统复位了没有。; I  _0 m# D; Q8 m) H6 y2 _1 @

; J# m5 I2 n5 D6 j  T1 A  F亲手修改来大于57ms的时间试试就知道。
! [: h% j4 F7 |0 u9 U
. g7 d2 c9 Q9 Y/ V0 `& [6 n四、今天的重点9 {% r! q" w( x! ]8 V

& y- \1 A  e6 m0 v# ^& k& A/ nA.WWDG计数器的范围为:0x40 --- 0x7F
* Q# l1 y- A+ _/ R8 J! \  G( A4 h. B( L* b5 K4 b3 J0 B# C2 @- c
B.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。9 W4 X3 o- S' C% c6 J5 r$ c) u% _, V

% b) B( ]. K* ^; o& bC.没有两个寄存器,编程时请细看寄存器
: l" q$ p% w( L4 r* ]7 S; Q! y% X3 n/ v/ D1 u+ L% ^7 U- l5 z
说明
( c& i. |- F; S4 s: u3 S
$ y1 Q  C  G. v7 U3 ~( B9 K今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。8 q' a) A' E- ~3 C

0 {* F9 E9 d& }+ M+ ?/ A. p3 ^7 m0 z/ g; B
收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似分享

官网相关资源

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