11 STM32-独立看门狗

本文介绍了独立看门狗的基本概念,包括其作为监视系统的定时器机制,如何通过寄存器进行初始化设置(如分频系数和重载值),以及提供示例代码展示了如何在MCU中使用独立看门狗以增强系统稳定性和可靠性。
摘要由CSDN通过智能技术生成

11.1 独立看门狗简介

看门狗(Watchdog)就是MCU上的一种特殊的定时器,用于监视系统的运行。在程序正常运行时,定时喂狗,修改计数器的值,保证递减计数器值大于0;在程序发生错误(例如程序出现死循环)时,无法喂狗,独立看门狗作为一个自由运行递减计数器,当递减计数器值达到 0x000 时,软件自动复位。这种机制能够确保系统的稳定性和可靠性,避免由于系统崩溃或死机等问题对整个系统造成的影响。

11.2 IWDG 主要寄存器

在这里插入图片描述

关键字寄存器(KR),初始化时先使能,后续喂狗指的是在此寄存器里写入值0xAAAA

在这里插入图片描述

PR寄存器用来设置时钟分频,独立看门狗本身就是定时器,此寄存器用来设置分频系数。
在这里插入图片描述

RLR重载寄存器,用来存放重载值,当喂狗后,经此寄存器的值写入计数器,计数器重新递减。看门狗的喂狗时间间隔主要跟此值相关。

11.3 应用代码

//初始化独立看门狗
//prer:分频数:0~7(只有低3位有效!)
//rlr:自动重装载值,0~0XFFF.
//分频因子=4*2^prer.但最大值只能是256!
//rlr:重装载寄存器值:低11位有效.
//时间计算(大概):Tout=((4*2^prer)*rlr)/32 (ms).
void IWDG_Init()
{
    IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable); //使能对IWDG->PR IWDG->RLR的写
    IWDG_SetPrescaler(4); //设置IWDG分频系数
    IWDG_SetReload(1000);   //设置IWDG装载值
    IWDG_ReloadCounter(); //reload
    IWDG_Enable();       //使能看门狗
}

//喂独立看门狗
void IWDG_Feed(void)
{
    IWDG_ReloadCounter(); //reload
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值