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

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

[复制链接]
STMCU小助手 发布时间:2021-11-30 21:26
前言
4 {; E8 Y: B/ e, t4 R
# i. h9 b; h, O) \% ?' h今天总结“STM32F103 WDG看门狗”,STM32F1有两个看门狗,IWDG独立看门狗和WWDG窗口看门狗,今天将两个看门狗一并总结了。
- ?3 F& J1 e+ }/ ]* E( A9 E; Z% K8 V& M$ a2 ?4 R
总结一下二者的区别:
0 [7 u5 F7 N2 {; h! n! ~8 p' S2 z9 m% m
1)、IWDG使用内部低速时钟LSI,WWDG使用系统时钟APB1ENR) I% d# a  R; p
: b% X9 [. Z8 x) Y* m9 T) d
2)、IWDG没有中断,WWDG有中断
# E4 I& S( q) V/ s+ @
4 t; n9 G; C; ]$ N& o7 [5 O3)、IWDG是12位递减的。WWDG是7位递减的
9 |- u. L' @' M* ?) K/ f2 H9 S5 e# Z( T. O$ }
4)、IWDG只有下限,WWDG有下限和上限. M) ^7 r4 u/ U% U

: S1 C. b2 V, t+ r" a5 ~5)、IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。 WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。
  [- B) M3 F7 E$ L+ e- l/ f8 L. g& C
看门狗在长期工作的产品中用到比较多,作用很简单,防止死机。看门狗的功能也可用于定时计数等。
& A( B( f' Q% U3 ~# _  M+ R( y; o  K; U+ y
本着免费分享的原则,将总结的工程源代码分享给大家,还望看到的朋友关注一下微信公众号,并将文章分享给你的朋友。
! @6 N6 `6 |2 q: k% y# z  h, n
" @/ K( ?4 c5 M/ G5 e0 G内容讲解6 w; }6 r( g5 }# h+ t

0 @7 q& O. x( V* }) e工程概要说明: IWDG工程基于“EXIT中断”工程修改而来,因为使用到按键来喂狗。系统复位,快速闪烁两次LED,接下来间隔1秒串口打印一个计数值(从0 - 8),在8秒的时间内按键喂狗,计数值会归零;如果不喂狗则会复位。
) c$ _8 I( U9 V; y+ ?0 X! z9 _% l* I) c0 o. q+ r
WWDG工程基于“TIM定时”而来,因为使用了定时的功能。我提供的工程喂狗的时间是57ms(刚好最大值),间隔57ms喂狗一次,不会复位(LED快速变化, 快速打印WWDG...); 如果大于57ms(自己可以修改一下)未喂狗则会复位(LED慢速变化, 不断打印Reset...)。
) b7 V& E8 c& @( e% G# l  |# I% `6 x" b
提供的工程简单明了,详细中文注释,方便自己方便大家。9 j) `4 I- H0 M+ j% A

  [' V7 F' M* t  x) Z# {, p关于“STM32F103  WDG看门狗” 我把重要的几点在下面分别讲述:/ P& h7 X7 `% q3 ~7 S* t1 k

4 s8 r3 e# g- N一、IWDG的配置
$ Y3 O; K( i% q% h( h9 O" y! z; Q2 d9 F# u) J
20160517225637401.png
: l7 }7 n/ t  S/ E$ ^

- W- A8 w! A# I
20160517225641035.png
% d5 W8 E$ }  [2 t5 |

; v( a6 ^5 E/ L) c+ M/ i) s# D7 S, g该函数位于IWDG工程的main.c文件下面;  {# t  |8 T# H* y' N- q- C6 V
9 O% G; x/ k9 m5 _+ c9 q
提供的框图为见资料。8 Z3 I% k" d' T9 n- y  s

( E3 k, I8 u# P2 U9 M9 X我想大部分关心的是这个8秒的喂狗时间是怎样计算出来的,其实,看了程序的注释和框图大概就应该能明白了。40K分频256之后就只能在1秒计数156次,9 W* I# i" J" ^& S' Q' V$ n# }/ T" J
0 e; d# p7 w" _
而要计满1250(40000/32)就需要8秒。不明白的朋友请自己分析一下哦。
) N3 B; J7 n2 k( V3 s' i+ U
* [" e4 `9 k3 u, z二、WWDG的配置2 z0 U1 S+ o/ I4 ?6 z! b4 Z

5 f" B6 z7 w2 E/ g
20160517225657394.png

2 I- K' n  x' x; b0 m9 L. w5 G2 R# m9 q9 {
20160517225702957.png

! Q, Z! Q, E' W& M  z

; L1 |& o( j) q7 L* a, x% B' Q4 l# ^' K+ c
该函数位于WWDG工程的main.c文件下面;
7 F! S) m, i" ]) w- e6 s- e) |% M& b; i; N+ _5 m* \+ u
提供的框图为见资料。
6 N/ N& z  g1 T  L6 r  i! r9 D* [. C
这里也主要讲一下最大喂狗时间57ms.分频之后只能在1秒计数1099次,要计满63个大概就需要57ms,这个值就是最大值。8 R8 Z2 _8 R) j* G

' C( f- }: _! N" w1 D: |这个工程需要自己修改这个时间来测试,建议都自己亲手修改代码测试一下。
4 _5 j9 U' V7 i7 f/ K) s% y  A9 {3 r" z' f. K7 v
三、WWDG主函数
, I1 I) R% i1 f5 Q+ j
: m) t, j/ t3 ]% L) d. ^8 g
20160517225713301.png
4 }9 {% \) o6 r  l7 ^

: C" H0 a0 r+ x3 f% z# X+ l该函数位于WWDG工程的main.c文件下面;9 i4 H( L  A  n2 \! E

1 x0 M+ i/ N$ S: O+ {- B) J& N通过串口打印的信息就可以清楚的知道系统复位了没有。7 Z# N+ X0 n( \
5 o3 T. G- O' l$ ~3 n9 i
亲手修改来大于57ms的时间试试就知道。' G* g' R9 V. W  q4 j* G: ?

2 y& z7 G/ n3 v  C四、今天的重点
. i/ S( Z9 L9 x/ a* @1 h% t
7 g6 b5 K) m% A8 e. C3 lA.WWDG计数器的范围为:0x40 --- 0x7F
/ h8 u! }1 `) [7 w+ E' D, i
  N, b2 N3 H3 h9 Y9 TB.当微控制器进入调试模式时(Cortex-M3核心停止),根据调试模块中的DBG_WWDG_STOP 配置位的状态, WWDG的计数器能够继续工作或停止。4 s' Z- D5 E* f/ q; U
, d  h7 J; u9 L( {6 i7 v
C.没有两个寄存器,编程时请细看寄存器7 K2 K0 W- O/ y9 C/ ]

* F, U& U) C8 d说明* Y+ v0 x/ p- U4 e" R  I$ q
& y# \' Y: J: @
今天提供的软件工程基于STM32F103大容量芯片,其实只要适当修改工程的部分配置,STM32F1的芯片都适用。
2 B# s9 p& Q) k
" T, b) f5 D- M6 N6 F
3 f: a5 x) m7 w9 l
赞 收藏 评论0 发布时间:2021-11-30 21:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

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