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

STM32CubeMX系列|独立看门狗

[复制链接]
STMCU-管管 发布时间:2020-9-21 13:11
独立看门狗
& m0 `8 N3 _0 b/ ^. |+ n# E' d7 w; C! a! K# A
1. 独立看门狗简介
3 Z: ]' z3 B6 N  T4 h3 V" {

看门狗其实就是一个定时器,从功能上说它可以让微控制器在程序发生意外(程序进入死循环或跑飞)的时候,能重新回复到系统刚上电状态,以保障系统出问题的时候可以重启一次。说的复杂一点,看门狗就是能让程序出问题是能重新启动系统% v% i# N; e* r  S3 u/ p- i
STM32的独立看门狗(IWDG)由内部专门的40KHz低速时钟驱动,即使主时钟发生故障,它也仍然有效。注意IWDG的时钟是一个内部RC时钟,是一个在30~60KHz之间的一个可变化的时钟,只是我们在估算的时候以40KHz的频率来计算,看门狗对时间的要求不是很精确* P' H; b: }7 ?% Q! p
独立看门口功能框图如下。实际上独立看门口狗是一个递减计数器,当计时器的值减到0时,IWDG会产生一个复位信号,系统复位重新启动。为避免产生看门狗复位,则需在计数器减到0之前重载计数器,即“喂狗”。当程序出错时没有刷新计数器,计数器递减到0,系统复位重新启动,避免程序继续错误运行


6 x3 x1 z% L/ g$ v( N6 ~


) E) w4 M* ?; p6 i( a
1_meitu_18.jpg
. p/ I6 b0 n  Z8 A" g2 s8 o. J
3 U" O$ @* e( H; @. B! h7 h2 B
独立看门狗超时时间(40KHz的输入时钟LSI)
( E" N8 s0 I: Q# m0 B3 C

) ]2 }/ J% D: {/ M* W6 ^! O

2_meitu_19.jpg

# F9 C; Z0 R# ?' N( R/ |
2. 硬件设计% ^3 G; Z: T  z5 Q6 I+ f

使用USART1来打印调试信息,PC0用来指示程序是否复位

3_meitu_20.jpg

% V' H0 z! N, _7 P
3. 软件设计3.1 STM32CubeMX设置
( v$ ]' }' @. u" a) M
  • RCC设置外接HSE,时钟设置为72M;IWDG的时钟默认为LSI时钟
  • PC0设置为GPIO推挽输出模式、上拉、高速、默认输出电平为高电平
  • USART1选择为异步通讯方式,波特率设置为115200Bits/s,传输数据长度为8Bit,无奇偶校验,1位停止位5 D/ p" N( |+ c+ e3 T4 l
4_meitu_21.jpg
3 D  A* r6 E# l; S

' N. F% @% R+ d5 ~
  • 激活IWDG,IWDG的时钟为40kHz,此时设置计数器时钟为32分频,则分频后的时钟频率为1.25KHz(时钟周期为1s/1250 = 0.8ms),递减基础器重载值(down-counter reload value)配置为1000,即800ms不刷新IWDG则系统复位
    2 U/ G' Z: L% Q3 P$ y# W0 o3 n

    3 p: n" x2 d/ R2 C$ y* b8 A& T

5_meitu_22.jpg

  • 输入工程名,选择工程路径(不要有中文),选择MDK-ARM V5;勾选Generated periphera initialization as a pair of ‘.c/.h’ files per IP ;点击GENERATE CODE,生成工程代码: }/ D/ D3 S$ w: v. n) A; s2 a

    3 b. k$ y$ D0 `* E7 A4 Q
2 g$ l2 E. ]6 b. p0 X$ p! x2 s+ C

4 W( k$ {9 B" y1 S3.2 MDK-ARM编程3 O8 U) h0 f! v0 {6 V/ A, _

% C2 \0 Q1 F5 m# c
  1. void MX_IWDG_Init(void){. ]2 A5 W; o* [0 O2 x8 u" M& b
  2.   hiwdg.Instance = IWDG;- M8 X- z) {& D
  3.   hiwdg.Init.Prescaler = IWDG_PRESCALER_32;7 v! ?" U/ h. [. Q# D+ N
  4.   hiwdg.Init.Reload = 1000;
    2 j  ]* q; l' F$ e- O
  5.   if (HAL_IWDG_Init(&hiwdg) != HAL_OK){
    : O; v" U1 b  u7 j
  6.     Error_Handler();
    2 Y% F$ a$ T5 T: [, I
  7.   }, V: E  f+ \, f/ v
  8. }
复制代码

5 f# y! y1 I$ I- r
  • 在main函数中编写代码,while循环里每500ms喂一次狗2 S7 _6 L* |( C' y  U: k1 z
  1. int main(void){0 V3 V1 p! n7 X7 s
  2.   HAL_Init();8 s: q3 n4 N% {0 \8 I
  3.   SystemClock_Config();. [& i. J7 P# B  M
  4.   /* Initialize all configured peripherals */
    - _& S9 M3 T3 f2 b% T) V
  5.   MX_GPIO_Init();  x) S# i3 u' {6 x: G4 E
  6.   MX_IWDG_Init();
    8 z5 F5 S4 H& E( Q8 j6 F
  7.   MX_USART1_UART_Init();8 x- ?& g: V  g* `* J. _* z
  8.   /* USER CODE BEGIN 2 */3 a% L. V6 e3 @8 ]+ A. W) q' T. a! f( R
  9.   printf("\r\n***** AndyXi IWDG test program *****\r\n");
    " i  ~; v. X7 J! ^: ^
  10.   HAL_Delay(300);% I3 U) C0 Y. ^' a
  11.   HAL_GPIO_WritePin(GPIOC,LED1_Pin,GPIO_PIN_RESET);
    0 h, I' ]& d* P% `& s
  12.   /* USER CODE END 2 */
    0 {& J1 M+ M& D% p& Z4 e
  13.   /* USER CODE BEGIN WHILE */2 z4 m; D( d5 K6 h8 d
  14.   while (1){, d' M7 Z0 b0 Z" q# c
  15.         printf("\r\nRefreshes the IWDG...!\r\n");4 h2 F  F# N% g
  16.         HAL_IWDG_Refresh(&hiwdg);; N# d$ `1 k! n$ k8 {
  17.         HAL_Delay(500);* _/ q* _, I& o8 v
  18.     /* USER CODE END WHILE */
    4 d$ H+ f; e: `) U* l' v7 I
  19.   }5 c# u1 r) x+ v, A( F* Q
  20. }
复制代码

0 `6 W- y: w0 {. i. P9 Q* R& D+ m/ ]" B4 q, b7 w8 K
$ u9 V: _+ b7 A
4. 下载验证- F; D7 @9 e$ L  y
  • while循环里每500ms喂一次狗,因此程序不会被复位,LED1常亮4 F- V* Y$ B4 O" \. O
2 s! x# e$ u. m+ X7 |
  V' y' b' s% X4 ^$ O" D7 b

6_meitu_23.jpg


4 Z: z7 T" M2 {6 U) v, F2 W
  • 如果注释掉while循环里的喂狗动作,程序会一直被复位,LED1闪烁& M0 m" c7 ]6 r& V2 ^1 P

6 B; ]5 [) T) V# b
/ K0 u% s# X6 o
9 i% |5 Y" ^# G5 I/ w
# ~! t2 ^6 C# u

7_meitu_24.jpg

" r) H$ O4 @- O% q8 v+ w; X& ^

( q/ Y& C6 f$ E7 v) A" j+ n1 d$ c- `  b

$ ], I3 Z4 d( }, f5 R, t/ g9 z% l5 T7 X3 @0 W. [8 h2 f( U( E

7 o+ f- I. B# B* o4 ^# G" k7 y. U
8 `5 `3 A, V. M: \
收藏 1 评论1 发布时间:2020-9-21 13:11

举报

1个回答
Ankky 回答时间:2020-9-22 08:58:42
这个看门口没有使能就启动了?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版