STM32的看门狗(WDG)

本文介绍了看门狗机制如何监控程序运行,区分独立看门狗IWDG和窗口看门狗WWDG的特点,以及它们在处理程序卡死、硬件故障和电磁干扰时的作用。还提到在大型项目中预防和解决问题的方法,包括设计考虑、定期更新和使用看门狗进行复位。
摘要由CSDN通过智能技术生成

WDG(Watchdog)看门狗

看门狗可以监控程序的运行状态,当程序因为设计漏洞、硬件故障、电磁干扰等原因,出现卡死或跑飞现象时,看门狗能及时复位程序,避免程序陷入长时间的罢工状态,保证系统的可靠性和安全性。

看门狗本质上是一个定时器,当指定时间范围内,程序没有执行喂狗(重置计数器)操作时,看门狗硬件电路就自动产生复位信号。

STM32内置两个看门狗

独立看门狗(IWDG):独立工作,对时间精度要求较低。(专用的LSI,40kHz,即使主时钟出现问题了,独立看门狗也可以正常工作)独立看门狗只有一个最晚喂狗界限,只要喂狗不超过这个界限就行,否则看门狗就会硬件复位电路。

窗口看门狗(WWDG):要求看门狗在精确计时窗口起作用。(使用APB1的时钟,即36MHz,没有专门的时钟,所以不算独立) 要求看门狗在精确计时窗口起作用,相当于有最早和最晚喂狗界限,提前喂狗和超过最晚界限都会产生复位。

注意事项

在大型项目中,各种状态和可能都非常多,写程序时一不小心就会留下bug,让你的程序卡死或崩溃。

解决办法:

1.程序员设计时就考虑程序运行的各种情况,避免常见的BUG,合理规划程序。

2.定期对程序进行迭代更新,修复存在的BUG。

3.看门狗,出现卡死/崩溃,让看门狗帮我们硬件复位一下。

硬件故障:例如想读取传感器的内容,但传感器坏了,程序就有可能死等去获取数据。

电磁干扰:强的电磁干扰可能让电子元器件失灵/程序跑飞的现象,有看门狗的话,程序进行复位,就会再次正常运行。

独立看门狗的框图

独立看门狗的框图与定时器很像,主要的部分都是预分频器PSC、自动重载器ARR、计数器CNT。

独立看门狗的预分频器(IWDG_PR)是8位的,最大值是2^8-1=255,最大可进行256分频。

独立看门狗的重装载寄存器和递减计数器是12位的,(IWDG_RLR)重装载数值与计数器值的最大值是2^12-1=4095,最多可计数4096次。

定时器的重要结构

需要注意的是定时器的PSC/ARR/CNT均为16位。

IWDG_KR寄存器

0xCCCC:1100 1100 1100 1100

0xAAAA:1010 1010 1010 1010

0x5555:0101 0101 0101 0101

IWDG_SR(状态寄存器)是可读不可写的。

IWDG超时时间

IWDG的预分频值有PR[2:0]决定,并不像定时器那样PSC值+1,而是有特定的预分频系数。

RL[11:0]由于是12位的,最小值是0,最大值是2^12-1,对应的计数值就是1-2^12(4096)。

WWDG框图

WWDG工作特性

超时时间是喂狗的最晚时间,即定时器减到0的时间。

窗口时间是最早的喂狗时间,由之前的框图,T[5:0]=W[5:0]时就可以喂狗了。

IWDG与WWDG对比

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值