STM32F1笔记(六)独立看门狗IWDG

本文详细介绍了STM32F1系列微控制器中两种看门狗的工作原理及应用——独立看门狗IWDG和窗口看门狗WWDG。重点讲解了IWDG的配置过程和喂狗函数的实现,以及如何通过调整参数来设定看门狗的超时周期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32F1内置了两个看门狗,独立看门狗IWDG和窗口看门狗WWDG,可以用来检测和解决由软件错误引起的故障。

IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

STM32的独立看门狗由内部专门的40Khz低速时钟(LSI)驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,而不是准确的40Khz,而是30~60Khz之间的一个可变化的时钟,只是估算的时候以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以时钟有些偏差是可以接受的。

 

独立看门狗的配置如下:

void IWDG_Init(u8 prer,u16 rlr) 
{	
    //取消IWDG_PR和IWDG_RLR的写保护
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
	
    //预分频
    IWDG_SetPrescaler(prer);
	
    //重装载
    IWDG_SetReload(rlr);
	
    //重载计数值即喂狗
    IWDG_ReloadCounter();
	
    IWDG_Enable();
}

这里需要注意的是,不需要使能时钟。

其中喂狗时间计算方式为:Tout = ((4*2^prer) * rlr)/40

prer取值范围为0~7

当prer值为4,rlr值为625时,Tout=1000ms,这样只要在1s之内喂狗就不会发生看门狗复位。

需要注意的是,由于看门狗的时钟不精确,所以最后不要太晚也就是太靠近1s的时间喂狗,需要提前一些。

 

喂狗函数:

void IWDG_Feed(void)
{   
    IWDG_ReloadCounter();									   
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dr_Haven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值