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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言. K  l* F0 [/ b2 p; ]
" Q3 R  K% z$ m8 F
今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。
! z; B( f1 _6 g- |* A' y6 U' D7 F+ y- o) b
总结一下二者的区别:
/ z% C' j) \, G, E0 S  V) `# A) d$ p7 s. k0 z7 @) b
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR
  L, E0 v  O; T3 V3 Q* w7 v7 S' h* ]4 m, w/ T- ^
2)、IWDG没有中断,WWDG有中断# ^2 T7 r% h! g5 q& `' e

6 j9 i4 ]8 |4 L3)、IWDG是12位递减的。WWDG是7位递减的
3 S4 o) H  C  B8 M& [1 |- T8 b
; P- u% ~' ~) s, [% t4)、IWDG只有下限,WWDG有下限和上限' w2 F8 }8 ^: k4 K9 f
( z5 b1 D. `' C& ]3 w
5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
2 P! D0 n3 M  v4 g6 [% o6 c4 }5 w& v2 v, j
看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。* C: s. S5 ~" z7 S' M

' i5 p5 o% P: ^1 `( Q0 m* V- s7 M本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
) x  U8 s) C9 e* F5 G/ K& L
0 A& R* w: j" `9 m. O内容讲解
' Z# t# i: I# E& c+ e

+ f2 T7 i6 U" x" g+ |工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
4 q4 {. l  R" g/ W9 K3 p% m* ^& s
/ o9 T. n4 H- B  hWWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。9 k' M, [7 F) i% Z) w: ^( [1 C
* ~; o1 w( f6 a% r: `; s, j
提供的工程简单明了,详细中文注释,方便自己方便大家。: }! ^1 U4 f4 y9 |0 b( v

0 V, F( A; f! ]6 q2 B关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:
. }" @" a, e+ w4 f
1 \) H2 g8 F, h; d. s: W一、IWDG的配置/ x! b! b# g' L$ C* |

7 i( Y7 l8 V+ W
20160517225637401.png
. S6 b4 C7 s- G, E/ W
' p) X; M1 {  M
20160517225641035.png

5 C; w' a3 |% F; I+ l0 X
1 I0 S( Q/ a3 G8 E- g' J该函数位于IWDG工程的main.c文件下面;
1 {8 [) X& x* M  V/ J; }& V/ Q% X. M+ ^
提供的框图为见资料。6 o8 e% Z; Y# C( X( _9 B
, D  m  L3 f* d8 k$ l# v
我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,( R3 q9 t( P) f& t4 c! T# j- S
, n" K. \8 w" C- t2 T6 I
而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。
7 Y, F" ?& A% `& }& L1 \) A( C6 \# K. P( E; J1 q" I6 G/ {9 u6 u
二、WWDG的配置
; A' |  B. d' \" r* c/ V9 h! C. v0 T1 j3 H8 Y8 f: c1 ~" C
20160517225657394.png
8 t3 ~, f5 v7 ~. `2 a9 Z9 G
4 s5 g% W# E  ]% z. [9 n& T8 c
20160517225702957.png

  K! h0 X9 r6 T: n  s( i
3 A( A  x* c+ X
$ d4 O* e+ ~) d: t- w
该函数位于WWDG工程的main.c文件下面;
6 Z* `- c; q3 Y! N/ H4 h. p
2 j+ L6 U' ^  U6 U提供的框图为见资料。
3 U# O8 \$ B( D; K  m- E0 T* |1 P7 q; G
这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。# R) H) G+ o7 H! g/ J

. {3 x% L' \+ ^( s' Q, i7 v# G这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。
6 ]+ r5 w7 F+ \: s
/ o4 k  S  }. P0 h9 w三、WWDG主函数
* ^2 ?, W9 K+ V# [2 j' e$ I- P8 G  ^# m: ]% w' w$ L8 h# I6 [
20160517225713301.png

1 b( p2 X6 g) C% O4 B
/ L& q2 d2 \" T& Q7 @该函数位于WWDG工程的main.c文件下面;
5 c# V/ a+ `7 S. }% F1 p9 ]$ F
6 Q* b. ?& ^( l- v4 t" s* h8 S通过串口打印的信息就可以清楚的知道系统复位了没有。) r2 C: {4 j2 w/ }( |

, G6 D+ k) L1 v/ }% m亲手修改来大于57ms的时间试试就知道。; ?5 o3 O4 ]& V0 ~5 B7 C, K7 S+ Y

6 A; B/ V- I% h四、今天的重点+ l; v1 h7 k4 x; K- d, k# _
( y# h# B- C8 N$ T( w& A' R
A.WWDG计数器的范围为:0x40 --- 0x7F$ }6 u9 a$ p% e% j8 X5 ^

" ?" Y9 ?- R1 e' {# ]3 xB.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。* K8 r! {5 m; m9 C8 ~
% A$ b( z! x" C8 D, C6 I* p
C.没有两个寄存器,编程时请细看寄存器3 u4 r% i- Z3 F2 P; {  n5 F% [

/ p9 L% I" C8 m4 s: ~$ @说明
0 h' t& S$ r1 O$ r
9 ]: f( B# x8 c" {' I今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。) D+ g8 c$ t0 n) h- o2 `$ `

) F1 X7 e6 p, @" r& r4 n8 w/ y# l8 ^2 Q5 ?' P6 H
收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

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