stm32mini看门狗——HAL库

本文详细介绍了STM32的两个看门狗定时器——独立看门狗和窗口看门狗的工作原理、寄存器配置、溢出时间计算以及操作步骤。独立看门狗由内部40KHz低速时钟驱动,不受主时钟影响,而窗口看门狗则有上下限喂狗时间范围。同时提供了相应的库函数和程序示例,帮助理解其使用方法。

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

看门狗概述

看门狗定时器是一个计数器,其基本功能是发生软件问题及程序跑飞后使系统重新启动。看门狗正常启动时自动计数,程序定期将其复位清零,如果系统某处跑飞或者卡死,定时器溢出并进入中断,在定时器中断中执行复位操作,使系统恢复正常工作状态。

stm32有两个看门狗,独立看门狗和窗口看门狗,下面会较为详细地分别讲解两者。

独立看门狗

STM32 的独立看门狗由内部专门的 40Khz(因为使用的是内部RC时钟,所以并不是准确的40Khz) 低速时钟驱动,即使主时钟发生故障,它也仍然有效。其限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。

独立看门狗主要用到下面几个寄存器:

键值寄存器 IWDG_KR 有效位0-15
预分频寄存器 IWDG_PR 有效位0-2 //具有写保护功能,要操作先取消写保护
重装载寄存器 IWDR_RLR 有效位0-11 //具有写保护功能,要操作先取消写保护
状态寄存器 IWDG_SR 有效位0-1 //读取一些看门狗的状态 重装载值更新,预分频值更新

下面放几个手册里的寄存器描述图(对描述图的理解能帮助我们明白如何使用库函数以及使用哪些)

键值寄存器IWDG_KR
在这里插入图片描述

预分频寄存器 IWDG_PR
预分频寄存器

重装载寄存器
重装载
独立看门狗溢出时间计算

Tout =(4*2^prer)*rlr / 40

具体怎么算如果还是没法理解的话可以看看这个博客,讲解的很详细:
stm32系列芯片独立看门狗(IWDG)溢出时间计算原理

独立看门狗操作步骤

取消寄存器写保护
设置独立看门狗的预分频系数,确定时钟
设置看门狗重装载值,确定溢出时间
使能看门狗
应用程序喂狗

程序示例:

iwdg.h文件

#ifndef __IWDG_H__
#define __IWDG_H__
#include "sys.h"

//看门狗初始化
void IWDG_Init(u8 prer, u16 value);

//喂狗
void IWDG_Feed(void);

#endif

iwdg.c文件

#include "iwdg.h"
/*看门狗初始化*/
void 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值