STM32CubeIDE看门狗

  1. 看门狗简介

看门狗:本质是一个递减的计数器

当程序有BUG或硬件问题导致的程序卡死或跑飞时,看门狗可及时复位程序

作用:防止程序卡死或程序跑飞,保证系统的可靠性和稳定性

STM32有独立看门狗(IWDG)和窗口看门狗(WWDG)两种类型

独立看门狗:独立工作,对时间精度要求较低

窗口看门狗:时间精度相对较高,并需在指定的窗口期内喂狗,否则复位程序

  1. 独立看门狗工作原理

独立看门狗:本质是一个递减的计数器(12位),当看门狗被激活后,递减计数器计数到0x000时产生复位

作用:防止程序卡死,或者说程序跑飞

上限0xFFF-1,下线0X000

注意:上限可由看门狗的重装载寄存器设置

在计数器计数到0之前,要进行喂狗,可重装载计数器的值,防止复位

喂狗,将0XAAAA写入到IWG_KR中即可!HAL_IWDG_Refresh()

Tout=(psc*rlr)/FIWDG

Tout是看门狗溢出时间;fIWDG是看门狗的时钟源频率

PSC是看门狗预分频系数;rlr是看门狗重装载值

CPU必须及时喂狗,否则系统复位重启!

 

  1. 独立看门狗实战环节

目的:验证不及时喂狗,系统将复位重启

预设:IWDG的溢出时间为1s,即1s内不喂狗,则系统复位!

接下来进行操作,一秒一次喂狗。去图形化界面,IWDG➡Activated(勾选)

IWDG counter clock prescaler(预分频系数)设置为16;

IWDG down-counter reload value重装载值最大值

看一下LSI这边是40KHZ

生成代码

如果是独立看门狗导致他复位的不复位,否则就是其他复位,清除复位标志

  1. 窗口看门狗工作原理

窗口看门狗:本质也是个递减的计数器,并且它能产生系统复位信号提前唤醒中断

下限值不是0,而是0X3F

窗口看门狗的特点:1.当递减计数器值从0X40减到0X3F时复位(即T6位跳变到0)

  1. 计数器的值大于W[6:0]值时喂狗会复
  2. 当递减计数器等于0X40时可以产生提前唤醒中断(EWI)
  3. 在窗口期内重装载计数器的值(喂狗),防止复位

作用:用于监测单片机程序运行时效是否精准,主要检测软件异常。

独立看门狗和窗口看门狗的区别:

  1. 窗口看门狗实战环节

目的:验证是否在窗口期喂狗,可不执行复位

预设:计数器值为0X7F,窗口值为0x5F,预分频系数为8

接下来实战:把独立看门狗Activated勾选去掉

把窗口看门狗Activated勾选

预分频系数WWDG counter clock prescaler设置为8,窗口值WWDG window value为0x5F,计数器初始值WWDG free-running downcounter value为0X7F;中断Early wakeup interrupt为不使能;

生成代码把上一一节的IWDG改成WWDG运行可以看看。

然后我们把中断打开看一下,中断Early wakeup interrupt为使能,到NVIC勾选Window watchdog interrupt设置抢占优先级为2

生成代码然后按照下图写一下函数,运行即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值