STM32理论 —— 看门狗

1. 简述


STM32 内部自带了 2 个看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG);

2. 独立看门狗 IWDG


STM32 的独立看门狗由内部专门的 40Khz 低速时钟驱动(该内部低速时钟并不精确),即使主时钟发生故障,它也仍然有效;

  • IWDG 的作用:在一定时间内若没有接收喂狗信号(表示 MCU 已经挂了或程序跑飞了),便实现处理器的自动复位重启(发送复位信号);
  • 注意 IWDG 在一旦在程序中启用,就不能再被关闭!

2.1 IWDG 相关寄存器

2.1.1 键值寄存器IWDG_KR

在这里插入图片描述

  • IWDG_KR 的使用

在这里插入图片描述

2.1.2 预分频寄存器IWDG_PR与重装载寄存器IWDG_RLR

  • 接触两个寄存器的写保护:具有写保护功能。要修改这两个寄存器的值,必须先向IWDG_KR 寄存器中写入 0x5555;
  • 看门狗溢出时间计算公式:Tout=((4×2^prer) ×rlr) /40,单位ms,其中prer 为看门狗时钟预分频值(IWDG_PR 值),范围为 0~7;rlr 为看门狗的重装载值(IWDG_RLR 的值);

2.2 核心代码

// IWDG 初始化函数
void IWDG_Init(u8 prer,u16 rlr) 
{
 	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作
	
	IWDG_SetPrescaler(prer);  //设置IWDG预分频值:设置IWDG预分频值为64
	
	IWDG_SetReload(rlr);  //设置IWDG重装载值
	
	IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器
	
	IWDG_Enable();  //使能IWDG
}
// 假如预分频系数为4,自动重装载系数为625,则IWDG 溢出时间为1s
IWDG_Init(4,625); 


// 喂狗
IWDG_ReloadCounter();

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Truffle7电子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值