IWDG与WWDG

1.看门狗

1.1看门狗的作用

WDG–看门狗

IWDG–独立看门狗

WWDG–窗口看门狗

给定一个定时的时间,时间到了之后MCU复位

在程序正常工作时,不让这个时间到达设置值–重新计数(喂狗)

1.2看门狗的区别
独立看门狗(Independent Watchdog)
	通常是指在微控制器(MCU)或其他电子系统中,用于监控系统运行状态的一种独立计时器。它独立于主系统运行,如果系统发生故障或停止响应,独立看门狗可以触发复位,以防止系统进入不安全或不稳定的状态。
独立看门狗的主要特点包括:
独立性:它通常有自己的时钟源,不依赖于主系统的时钟。
复位功能:如果看门狗计时器溢出,它可以触发系统复位。
喂狗:系统必须定期“喂”看门狗,即重置其计时器,以防止其超时。
故障保护:在软件故障导致系统无法正常运行时,看门狗可以作为最后的安全机制。
低功耗:即使在主系统电源关闭的情况下,某些看门狗也可以继续运行。
可编程性:许多看门狗计时器允许用户设置超时时间。

在嵌入式系统设计中,独立看门狗是一个重要的安全特性,特别是在那些对可靠性和稳定性要求极高的应用中,如汽车电子、工业控制系统和医疗设备等。通过使用独立看门狗,可以在软件故障发生时快速恢复系统,避免潜在的危险或数据丢失。
窗口看门狗(Window Watchdog,简称WWDG)是一种特殊类型的看门狗定时器,它与独立看门狗(IWDG)类似,用于监控微控制器(MCU)的运行状态,以确保系统在发生故障时能够及时响应。窗口看门狗的主要特点是它提供了一个可配置的时间窗口,在这个时间窗口内,系统必须重置(或“喂”)看门狗,以防止其超时并触发系统复位。

以下是窗口看门狗的一些关键特性:
时间窗口:WWDG提供了一个可设置的时间窗口,系统必须在这个窗口内重置看门狗。如果超过了窗口的上限时间,看门狗将不会复位,如果少于窗口的下限时间,重置操作将被忽略。
灵活性:与IWDG相比,WWDG提供了更大的灵活性,因为它允许系统设计者根据需要设置不同的超时时间。
防止误触发:由于存在时间窗口,WWDG可以防止在系统正常运行期间由于意外的看门狗重置指令而导致的误触发。
低功耗:WWDG通常设计为低功耗,即使在系统待机或低功耗模式下也能保持运行。
可编程性:WWDG的超时时间通常是可编程的,允许用户根据应用需求进行配置。
安全机制:在某些应用中,WWDG用作安全机制,以确保在软件故障或外部干扰导致系统失去控制时,系统能够安全地复位。

窗口看门狗在需要精确控制系统复位时间点的应用中非常有用,例如在某些通信协议中,系统必须在特定的时间内响应,否则就会被认为是故障状态。通过使用WWDG,可以在不干扰系统正常运行的情况下,确保系统在必要时能够安全地复位。
1.3 IWDG

设定时间为12s,如果时间内不喂狗,那么重启MCU

任务:12s周期内必须喂一次狗

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

MCU有几个时钟源:

​ HSE–外部高速时钟 4–16MHZ

​ LSE --外部低速时钟 32.768HZ

​ HSI–内部高速时钟 8MHZ

​ LSI–内部低速时钟 40KHZ

配置看门狗定时器时需要考虑微控制器(MCU)的时钟源,因为看门狗定时器的计数速率(即它超时的时间)是由MCU的时钟频率决定的。不同的时钟源具有不同的频率特性,这些特性会影响看门狗定时器的行为

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

IWDG_PR(Prescaler):这个选项或寄存器用于设置看门狗定时器的时钟预分频值。由于看门狗定时器的时钟频率通常是由MCU的系统时钟决定的,预分频器允许开发者降低看门狗的计数速率,从而延长超时时间。预分频器的值直接影响看门狗超时的时长,通常可以设置为不同的分频值,比如1、4、16、32、64等,具体取决于MCU的设计。

IWDG_RLP(Reduction Low Power):这个选项或寄存器与看门狗在低功耗模式下的行为有关。在某些微控制器中,当系统进入低功耗模式时,看门狗定时器的时钟可能会被减慢以节省能量。IWDG_RLP允许开发者在低功耗模式下改变看门狗定时器的时钟速度,以确保即使在低功耗模式下,看门狗也能在合理的时间内复位,防止系统因软件故障而长时间无法响应。

使用方法通常涉及以下步骤:

配置预分频器:通过设置IWDG_PR寄存器的值来选择所需的预分频值。

配置低功耗模式:如果需要在低功耗模式下保持看门狗的响应性,可以设置IWDG_RLP寄存器或相应的配置选项。

启动看门狗:在配置了预分频器和低功耗模式后,启动看门狗定时器。

定期重置:在程序正常运行期间,需要定期写入特定的值到看门狗的重置寄存器,以防止它超时并触发系统复位。

考虑系统时钟:在配置IWDG_PR和IWDG_RLP时,需要考虑系统时钟的频率,因为它们共同决定了看门狗超时的具体时间。
1.4 WWDG

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计数器初始值0X7F

窗口设置值为0X5F

​ 计数器会从0X7F开始减,一直向0减下去

​ 在0X7F–0X5F期间–不能喂狗(给计数器重新赋值)

​ 0X5F–0x40S中间–窗口,可以喂狗的时间

​ 当计数器到0X3F时,MCU复位

#include _IWDG_H_
#define _IWDG_H_

#include "stm32f10x.h"
#include "stdio.h"

void IWDG_Config(void);
void IWDG_Feed(void);

#endif

#include "iwdg.h"
/*
 40KHZ 时钟频率
 公式:
 	重装载/(40000/分频)
 	624/(40k/256) =4s
*/
void IWDG_Config(void)
{
    IWDG->KR=0X5555; //使能对IWDG->PR和IWDG->RPL
    IWDG->PR=0X6;    //设置分频系数=6,256分频
    IWDG->RPR=624;	//从加载寄存器 IWDG->RLR
    IWDG->KR = 0XAAAA; //计数器清零
    IWDG->KR =0XCCCC;  //使能看门狗
}
void IWDG_Feed(void)//喂狗
{
    IWDG->KR=0XAAAA;
}

WDG->RLR
IWDG->KR = 0XAAAA; //计数器清零
IWDG->KR =0XCCCC; //使能看门狗
}
void IWDG_Feed(void)//喂狗
{
IWDG->KR=0XAAAA;
}










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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值