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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言+ N( f# W9 p* I5 P. x, O
! x1 j, \; Q* R
今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。
/ k% L% e2 h/ p3 Z; S- H
% v0 \. h0 p8 g2 V3 l* A总结一下二者的区别:
. n! a5 B4 Q- r. [/ I6 N* @& _9 A/ ]$ ?. e0 w. s
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR2 \6 H4 \7 D: q, ^" ]

: U8 m/ X: t& z- o9 _( u4 L( l2 O2)、IWDG没有中断,WWDG有中断
# n8 g) f/ f% ~& u" e# [* U5 ^8 ?, A9 X4 }( ?0 v& a* y
3)、IWDG是12位递减的。WWDG是7位递减的
) c; d1 Q$ h4 `- |7 X* H( I5 j4 R
4)、IWDG只有下限,WWDG有下限和上限8 Z; b8 Q* r1 @* X9 G6 S# u8 W1 F" y

+ U5 T- W4 g$ }6 f7 E% ~, x5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
6 o9 I, ~1 R- \' m' h. F, S) n4 l7 L" T- C+ a3 ~
看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。. C) ?+ o/ o8 m% ?+ M9 [$ Z

. _; z; ], m6 K+ P# J本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
/ L. a8 L1 t# {
4 y" ]8 n! _2 s/ o9 r5 v% B' ^内容讲解1 i, K% ?0 q  t: X3 {
; Q0 V0 l  @9 N7 w- b, k
工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
, c# `+ ^9 D! m3 r9 ?0 S) i7 t. Q5 w: y/ z7 r
WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。
$ w( w5 q* ?3 x. ~. G& G9 t7 B4 V) }
2 u0 ^, o" u3 C* x2 v& F" I3 Y% ~提供的工程简单明了,详细中文注释,方便自己方便大家。
9 \" a# I3 z* W/ a% q
# m& {* t, R. ^! n1 H9 A* I8 @6 u. n关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:
! _4 [+ z$ X& [2 o4 s
' F4 a3 d  K; J' |一、IWDG的配置
+ v" X- U  u9 a& c9 ?" J1 C7 z( z! h0 f" ]% ]- ?3 z
20160517225637401.png

5 o# r" k6 K2 I5 F
) z9 ~& S- O* @
20160517225641035.png
8 Y" J% {) h( `; s* u& v3 V

# f8 i# L# U9 Q- R8 d- {' S( ^该函数位于IWDG工程的main.c文件下面;
# k' Y) `4 w4 y: b. C
( b3 G" X4 c7 z* l' K5 H提供的框图为见资料。
' D( Z* e2 V8 U4 a* z4 v% W4 o5 {
' e+ O- L. L. Q我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,% `) I3 T- Z1 y
) @1 S9 |2 ~7 a; [2 P# p( j7 q
而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。: E7 Q; x5 n* f6 H. m5 F2 J  ~
7 B0 n4 Y* Z% v# U: n
二、WWDG的配置
3 S, t1 }2 `7 t1 ^
$ z/ }) n, s5 ?6 e! w
20160517225657394.png

( L, [3 D$ `$ i) |! t  c8 [3 J' f& W, \. X8 K! {
20160517225702957.png
, D6 d% l$ M4 O* @; K% ~- W3 e

# O2 P1 K; z2 O. U4 x4 W$ ?6 ]% x2 ^% x. I
该函数位于WWDG工程的main.c文件下面;
1 F  S6 Y5 A2 I$ I) }" _0 O- A; ?% D- d& s& T9 M5 D0 U
提供的框图为见资料。
4 ]) b+ n" V0 |, W( @0 S' r7 S) n; g' P( J. f
这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。
/ r9 S4 D$ d8 l4 `6 T
$ D- z$ J6 ~& T- |' p2 U这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。
# O+ L7 s6 w0 ~# p0 h; X4 @3 F: F$ `) N+ }
三、WWDG主函数
5 [* Y+ c+ Z' i
' |8 L$ r" y+ X# F
20160517225713301.png

* u& L3 G9 D9 J! k* W9 n; L4 I  g5 ], ^0 V
该函数位于WWDG工程的main.c文件下面;
9 I6 t4 m+ p) J  f3 d7 V4 N6 y6 ?
. z6 c, e1 q+ }通过串口打印的信息就可以清楚的知道系统复位了没有。9 _! m' }8 h, }7 Z( A3 q
2 T; ^% B+ h+ D+ S! W! p
亲手修改来大于57ms的时间试试就知道。
! E1 A6 t: h2 g' X0 ^  G% G$ `# D/ L* C0 {5 ~* _* ?, m
四、今天的重点
. T& P& F6 Z1 Z8 w# C" {2 |, S/ @. s3 x) B2 K; q
A.WWDG计数器的范围为:0x40 --- 0x7F- g1 Z4 j/ s; J! X3 m3 _

, R9 p" L3 V( p. N! c4 i$ BB.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。1 C2 o- E$ K  M2 r7 N# g
: \. T4 K9 E1 f8 F) Y8 ?. ?
C.没有两个寄存器,编程时请细看寄存器, {% Y# T; n0 ~, S% f0 w
  l8 H' d& q# o" U' L) z
说明
* C% }% F( @: H4 H4 }2 @& {% }9 s1 R7 u% T; ~
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。, q! |+ z: j- Z2 {1 h6 S
6 Y2 r' a* V6 a6 ~  [$ g
. D# [3 D4 Y( X6 [& N
赞 收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版