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

【经验分享】STM32独立开门狗(IWDG)HAL使用详解

[复制链接]
STMCU小助手 发布时间:2022-4-9 23:07
看门狗介绍+ T, s7 j3 e! V7 l  N1 q' R
介绍:看门狗其实就是一个定时器,给他设置一个定时值,它会逐渐递减,递减到0后就会进行芯片复位,在看门狗定时器还没到达0时重新给他赋值的这个操作就叫喂狗。其实不管是单片机这样,大多数带看门狗的芯片实现都是这样的。
: h( J3 B6 Q+ u5 }" P7 x2 L4 V+ N0 C  I* E& s8 I+ {
作用:防止程序发生死循环,或者程序跑飞。5 b! h3 {+ o+ {7 A6 w' l$ y
4 H: O$ g. Y+ k  t1 t
STM32看门狗介绍
! n5 F) v) a& S( S1 }: Q0 |1 XSTM32包含两种开门狗:
* @1 V; K, f3 `8 h+ F2 S
% {! x& O! `# n& E: ?4 r
窗口看门狗(WWDG)- |4 o. Z) x/ W, H
独立开门狗(IWDG). w0 ]! L& k) _+ S
两者区别是窗口开门狗如果超时没有喂狗是触发中断,而独立开门狗是直接进行芯片复位。
8 D+ I, i0 X" y6 ?
4 h  h; G: Z) k1 m/ U时钟来源:
( L/ Q$ j! w  u, B6 ~8 E  V+ ?% {
2 G# b; Q. ^: g
独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。
& w5 a# e, v2 e* j# w" `4 i6 r# u' _7 I$ o
窗口看门狗(WWDG)由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。
3 V: u1 {% E- p3 C, y2 q# a
! s6 C$ \4 T) c* k5 R使用场合:
3 l8 t, ]& x7 s2 m  p: I& ^% g. Q3 ?2 t1 E1 g. _9 W* L
IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。" e2 B, p& }, q/ P

4 |* G0 Q, s# aWWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。6 I2 {, W# q  x8 ~/ [/ I# ~7 b

7 _. |, U& q+ w4 ?8 d$ q& |IWDG功能描述:$ M; |8 F, B1 \7 s

! y. B. F6 {( Y! `1 G. L在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗,此时计数器开始从其复位值/ K/ g* a4 M9 N. r8 E. [
0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键寄存器IWDG_KR中写入0xAAAA,IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位。
. K3 V0 K3 |3 ]* R2 D6 O' b: g8 N/ j& d. S1 R# L
IWDG_PR和IWDG_RLR寄存器具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR寄存器中写入0x5555。以不同的值写入这个寄存器将会打乱操作顺序,寄存器将重新被保护。重装载操作(即写入0xAAAA)也会启动写保护功能。 状态寄存器指示预分频值和递减计数器是否正在被更新。- D8 x- Z0 X" ?/ ?

0 X1 K& J& Z7 {7 j$ A) {IWDG超时时间:2 r7 U4 P& Z8 q$ k' q: l
6 ^  r+ ^% N( C, L! E7 T! \! ]
F1系列:
0 A# r7 H1 i$ w/ l! C- p3 }. e" c2 T( p: [# E5 O6 r5 M3 e
8FOV%)0W(MTGU53LNSRFY43.png ! g7 r: |* R6 _6 G

5 d7 k2 A- X6 C% k, DF4系列:
  T) J1 ~. [! U* @+ P1 _5 p2 Z% B% v
X9X(}S6QR2VIK`0}}EDUA7I.png
7 k4 \+ [5 A6 p2 K. x0 }# M; i, x0 J0 D9 r) p" g
由表可知,F1系列LSI给看门狗的时钟频率是40KHz,F4系列是32KHz。5 G& t* D# d& X' N1 B7 J* H

4 K7 [9 J8 @. n- z, G. ^超时时间计算公式:
4 H" g0 b: e9 x: s; f7 ?" u7 d4 }$ P( Q4 q& \
超时时间Tout = 4 * 2^PR * (重载值 + 1) / LSI
" \; A/ V( `9 y' u5 k6 }
, J: k' ~3 ~0 `! d- {. O) g重载值取值范围:0~4095" R$ J4 u' Q3 e* B

# c) W* U: H+ ?+ Y' L8 H# |以F1为例,4分频时所对应的PR位为0,重载值为0时是最短的超时时间,套用公式后:$ \2 ~& A4 A2 l  U0 o/ G
4 * 2 ^ 0 * (0 + 1) / 40000HZ = 0.0001s = 0.1ms
/ X; c* [4 d8 O7 ]8 Y$ }; \5 h( s" ~0 x/ C
当重载值为4095时是最大超时时间,套用公式:2 y$ A: w* t" K( F5 I8 z( F# k
4 * 2 ^ 0 (4095 + 1) / 40000HZ = 0.4096s = 409.6ms
# W2 @- W- p0 p$ V: d8 a" B8 ]$ l. k; c* y, o. G
STM32Cube配置设置

5 W- ]. u6 E) D8 X( c. i% `0 J以F1为例,开启看门狗:
9 m2 Z/ v5 d3 n# ]( i6 e+ T
1 e% N6 N7 }6 a0 x S`Z3JQ$NYP)%OV~AD@JDY@P.png
, H, f) S8 d* _2 k8 _! Z+ p6 l" I7 v0 s# L5 ]( l" i
配置时钟:0 t2 I1 B9 w1 L
; a& b: n* |+ I! V/ ?
20210611092502982.png / B) a6 Z  c1 W5 l

, S* }, q( w3 z2 Y& W$ v然后生成代码就可以了。
) S1 k( z* @8 b7 k6 K& J) h+ j. u2 _0 H
4 I8 t% m9 N/ i$ ?注意: 生成的IWDG初始化函数MX_IWDG_Init已经将看门狗启动了,如果不想这么早启动看门狗,可以将MX_IWDG_Init往后放。2 Z/ r" c0 Y3 n* a3 d
9 H3 H# \8 L( p! E

5 d6 ?& |0 h, r$ k1 r7 a$ b5 J8 V  Q; ?% h* _
赞 收藏 评论0 发布时间:2022-4-9 23:07

举报

0个回答

所属标签

相似技术帖

官网相关资源

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