【STM32】stm32独立看门狗(IWDG)

0x01 IWDG简介

STM32F10xxx内置两个看门狗,(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产生系统复位

独立看门狗(IWDG)由专用的低速时钟(LSI)驱动,即使主时钟发生故障它也仍然有效。IWDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合

0x02 IWDG主要性能

● 自由运行的递减计数器
● 时钟由独立的RC振荡器提供(可在停止和待机模式下工作)
● 看门狗被激活后,则在计数器计数至0x000时产生复位

0x03 IWDG寄存器配置

在这里插入图片描述

1. 键寄存器(IWDG_KR)
在这里插入图片描述

位31:16保留,始终读为0。
位15:0 w软件必须以一定的间隔写入0xAAAA(喂狗),否则,当计数器为0时,看门狗会产生复位。
位15:0 w写入0x5555表示允许访问IWDG_PR和IWDG_RLR寄存器。
位15:0 w写入0xCCCC,启动看门狗工作。

2. 预分频寄存器(IWDG_PR)
在这里插入图片描述

位31:3保留,始终读为0。
位2:0 rw000: 预分频因子=4 100: 预分频因子=64
位2:0 rw001: 预分频因子=8 101: 预分频因子=128
位2:0 rw010: 预分频因子=16 110: 预分频因子=256
位2:0 rw011: 预分频因子=32 111: 预分频因子=256

3. 重装载寄存器(IWDG_RLR)
在这里插入图片描述

位31:12保留,始终读为0。
位11:0 rw看门狗计数器重装载值(625)

IWDG配置分析
独立看门狗工作频率:40khz / 64分频 = 625hz
递减计数器减1的周期:1 / 625hz
独立看门狗的复位时间:625 * (1 / 625hz) = 1s

IWDG配置参考代码

#include "bsp_iwdg.h"

//使能IWDG,在40KHz LSI下,约等于每隔1s产生IWDG复位
void IWDG_Configuration(void)
{
	IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能或者失能对寄存器 IWDG_PR 和 IWDG_RLR 的写操作
	IWDG_SetPrescaler(IWDG_Prescaler_64);  //设置 IWDG 预分频值
	IWDG_SetReload(625);  //设置 IWDG 重装载值
	IWDG_ReloadCounter();  //按照 IWDG 重装载寄存器的值重装载 IWDG 计数器,喂狗
	IWDG_Enable();  //使能 IWDG
}

//喂狗,防止CPU复位
void IWDG_FeedDog(void)
{
	IWDG_ReloadCounter();
}
  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值