STM32-(31):独立看门狗

上一篇:STM32-(30):内部温度传感器 下一篇:STM32-(32):窗口看门狗

在嵌入式系统中,由于MCU(微控制单元:Microcontroller Unit)的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测程序运行状态的模块,俗称"看门狗"(watchdog)

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以在使用有看门狗的时候要注意清看门狗。

看门狗是恢复系统的正常运行及有效的监视管理器(具有锁定光驱,锁定任何指定程序的作用,可用在家庭中防止小孩无节制地玩游戏、上网、看录像)等具有很好的应用价值.

STM32F10X内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断或产生系统复位。
独立看门狗(IWDG)由专用的32kHz的低速时钟为驱动;因此,即使主时钟发生故障它也仍然有效。丨WDG最适合应用于那些需要看门狗作为一个在主程序之外,能够完全独立工作,并且对时间精度要求较低的场合。
窗口看门狗由从APB1时钟分频后得到的时钟驱动,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的行为。WWDG最适合那些要求看门狗在精确计时窗口起作用的应用程序。

在这里插入图片描述
键值寄存器(IWDG_KR)
预分频寄存器(IWDG_PR)
重装载寄存器(IWDG_RLR)
状态载寄存器(IWDG_SR)

简析:参照第26篇中 RCC 时钟系统框图中最下方一路 LSI RC 独立时钟就是提供给看门狗使用的,这个LSI进来之后,首先通过 IWDG_PR寄存器进行预分频,然后重新得到一个频率,然后用这个频率使 12-bit Down-counter 开始计数,每来一个时钟脉冲就减1,IWDG_RLR是重装载寄存器,这个值设置为多少计数器就从多少开始向下减开始计数,如果这个值减到0,就会产生一个复位信号,如果在减到0之前被重新装载一个新的值,就会重新开始计数,所以这里的重新装载就是**“喂狗”**,一般如果程序跑飞,就会来不及喂狗,自然而然就会产生复位信号。

看门狗超时时间(32kHz的输入时钟)
在这里插入图片描述

主要寄存器介绍

键值寄存器

给它一个特殊的值,就能产生特定的操作。起到一个控制作用。
在这里插入图片描述
所以喂狗只需向此寄存器写入 0XAAAAh,这样 IWDG_RLR的值就会自动装载、重新计数。

预分频寄存器

在这里插入图片描述

重装载寄存器

在这里插入图片描述

操作步骤

1)向IWDG_KR写入 0X5555。
通过这步,我们取消 IWDG_PR 和 IWDG_RLR 的写保护,使后面可以操作这两个寄存器。设置 IWDG_PR和IWDG_RLR 的值。
这两步设置看门狗的分频系数,和重装载的值。由此,就可以知道看门狗的喂狗时间,该时间的计算方式为: Tout =40 Khz / ( (4*2^prer ) * rlr ) ; 当然这个值是个粗略的计算值,因为时钟不准确,所以无法得到准确的喂狗时间。
2) 向IWDG_KR 写入0XAAAA 。
通过这句,使STM32重新加载 IWDG_RLR 的值到看门狗计数器里面。也可以用该命令来喂狗。
3) 向IWDG_KR 写入0XCCCC 。
通过上面3个步骤,我们就可以启动STM32的看门狗了,使能了看门狗,在程序里面就必须间隔一定时间间喂狗,否则将导致程序复位。利用这一点,我们将通过一个 LED 灯来指示程序是否重启。

IWDG 库函数

在这里插入图片描述

操作范例

void IWDG_Configuration(void)
{  
//使能对寄存器IWDG_PR和IWDG_RLR的写操作;
IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);
//设罝IWDG预分频值 /256 ; 40K/256=156HZ(6.4ms) 5s/6.4ms=781
IWDG_SetPrescaler(IWDG_Prescaler_256);
IWDG_SetReload(781);〃 设罝IWDG重装载值;要小于0xfff
IWDG_ReloadCounter(); //按照IWDG重装载寄存器的值重装载IWDG计数器;
IWDG_Enable(); //使能IWDG ;
}
上一篇:STM32-(30):内部温度传感器 下一篇:STM32-(32):窗口看门狗
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值