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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言& l0 w. b# N- v+ H/ V  ^

' L4 X5 p8 V# R今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。+ Y! _  H) x* a  I

3 u0 Y) x! B) n$ S  o7 v总结一下二者的区别:
/ Y( W/ r3 e: o- g5 u- c: `- t$ ?3 Y, G' U0 C% s* I" g3 Y
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR
; u" p6 G4 ^; {% O! m* V8 |5 s( m4 F# ?. u- {0 }5 E
2)、IWDG没有中断,WWDG有中断. P+ t/ Z% O( ?! q
- y5 I. c% E) n, h+ ]
3)、IWDG是12位递减的。WWDG是7位递减的
6 E$ }8 h0 U* H% S3 ]; S7 ~; Y% {8 c! T' B1 D
4)、IWDG只有下限,WWDG有下限和上限
( |/ T9 o# m7 }5 j7 z" G5 O7 v6 K0 l  U# h6 l
5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。, T$ v' I0 a) g* T* k: f' o3 Y

6 x! O) e7 X, j$ v看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。; U0 E" k, i2 ~
% @# A4 D' x, ?' o5 b6 d+ d
本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。9 |6 `# `5 @. H

0 T, ~: m3 Y0 u9 N内容讲解
3 l5 ^; o0 }3 k" E5 ^" ~
1 n' z7 j! y! r$ R8 a% q' y
工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
$ V+ x8 Z9 B3 G2 N( j. s, m( E& E/ @2 n
WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。
" |* f1 w5 _% e8 v* W7 S3 h! w) i
. _0 \( e% ~; K+ m! j1 T9 w# j" ^4 |提供的工程简单明了,详细中文注释,方便自己方便大家。- B( Q- O  {- a1 b2 j& G
# V- n  O, o# N+ \+ g( i1 C# a  P
关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:
8 ?9 i& b/ P+ d- R+ q/ d5 y
) ~( A/ n3 {6 k8 c6 f% s一、IWDG的配置
0 S  x7 E5 a6 o" n& n2 M" P$ L5 x* \8 H' N9 x! J
20160517225637401.png
. O$ |& _. J4 ?0 l0 C
) r5 Y4 P  d0 `4 G
20160517225641035.png

+ s  v0 L0 Y! W9 D6 d* }# z
2 J  ]2 G1 N, |* q3 |8 y3 a该函数位于IWDG工程的main.c文件下面;
  }/ v2 K: ?  F3 U) v' r8 T$ [( q2 ^( h' r
提供的框图为见资料。. l# Q. D5 w! \2 E. X0 M3 S$ d
7 \/ O4 F6 w" E# D
我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,
; g1 I. E$ F7 v$ _9 l
# G' R1 |$ y8 a+ w3 h1 @而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。* c& `9 Z$ t6 ]8 D
9 B2 w% J3 ^" h
二、WWDG的配置
2 Z$ e3 M( s) W$ r, V; {. \- P7 J' h. s3 Y+ h2 p  E
20160517225657394.png
% }# x. ^3 l. q

  H( I& ~6 |' O, ?
20160517225702957.png

1 `2 A) y- J6 ~0 H9 H' P+ V
: A# v+ ~2 [+ t# L% u/ |4 c, U6 V
$ N; }5 L1 k4 C2 v9 V% |" q
该函数位于WWDG工程的main.c文件下面;
* Z" ~$ B, Z4 z" q" S8 W& ]0 v! g2 Y4 [0 O0 {2 g. ~
提供的框图为见资料。
6 P$ o- Z% P! V$ F- ]
! [. X! v/ _1 v1 k+ Q' L  a9 {& E这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。) ]; D; v% M9 h) \+ R; W9 O
6 ~3 x7 J2 q& ^5 v/ P& u
这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。( Z* ^5 z' J7 z1 s4 B

4 b- N" ^0 s: v% f- n% l3 b6 X三、WWDG主函数
+ u' S% p0 n; K9 @: F1 T' @. \# O8 v- h: W' C& s. m  w+ r
20160517225713301.png
" }8 q  t& H, V6 L( D7 J' H, e

: a3 v7 o; O* K: [4 n该函数位于WWDG工程的main.c文件下面;
( d) N: R- f  ^9 |# @# c  L& Z6 Q* \7 O
通过串口打印的信息就可以清楚的知道系统复位了没有。
+ I! ^# n0 y1 W) _( D: j. k- I8 b0 o7 q$ q) Y3 j& W7 z% B
亲手修改来大于57ms的时间试试就知道。
. J, @( D4 S9 E- a9 H, F: f: Y5 r1 u7 R+ I: a( A6 a+ n/ R/ ]
四、今天的重点& g4 W6 g- k1 U
1 I3 q# T' A' k$ i! o0 r% {
A.WWDG计数器的范围为:0x40 --- 0x7F
4 m6 [2 k' k8 K, a, P
+ w) O1 ]* t* XB.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。1 F2 t8 T# v4 u; C
+ I( m4 ]# ^0 M* p/ d; Z5 s& R
C.没有两个寄存器,编程时请细看寄存器9 Q2 Q  l9 f! |5 g, y/ Y8 h
) A3 W7 a& i* f7 x
说明4 v7 V1 A: Q3 o( r+ a/ Y" D
4 E2 U* h5 g" L/ x! k
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。
/ s0 [: D4 d: U, u
2 u- l+ m' r) X( A! @* g* |- T7 O5 ~0 [& e) j. g, ?+ Q# p4 T
收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

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