首先,我们需要先要了解一下什么是看门狗?
-在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界的各种干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统陷入停滞状态。所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的模块或者芯片,俗称“看门狗”(watchdog)。
看门狗解决的问题是什么?
-在程序跑飞(程序异常运行)的情况,使系统复位,程序重新执行。
STM32内置两个看门狗:独立看门狗和窗口看门狗。
两个看门狗提供了更高的安全性,时间的精确性和使用的灵活性。
两个看门狗设备可以用来检测和解决由软件错误引起的故障。当计数器达到给定的超时值时,触发一个中断(仅适用窗口看门狗)或者系统复位。
独立看门狗IWDG由专用的低速时钟LSI驱动,即使主时钟发生故障它仍然有效。
-独立看门狗适合应用于需要看门狗作为一个在主程序之外能够完全独立工作,并且对事件精度要求低的场合。
窗口看门狗由从APB1时钟分频后得到时钟驱动。通过可配置的时间窗口来检测应用程序非正常的过迟或过早操作。窗口看门狗最适合那些要求看门狗在精确计时窗口起作用的程序。
M7的独立看门狗还可以配置成窗口看门狗使用。但是因为M7也带有窗口看门狗,所以一般情况下,我们较少使用此功能。
独立看门狗工作原理描述:
-在键值寄存器IWDG_KR中写入0XCCCC,开启独立看门狗。此时计数器开始从其复位值0XFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号IWDG_RESET。
无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA也就是通常说的喂狗,自动重装载寄存器IWDG_RLR的值就会重新加载到计数器,从而避免看门狗复位。
下图为独立看门狗的框图:
独立看门狗超时时间的计算:
然后是独立看门狗的寄存器:
1.键值寄存器:IWDG_KR ,0-15位有效
2.预分频寄存器: IWDG_PR , 0-2位有效,具有写保护功能,要操作先取消写保护
3.重装载寄存器 :IWDG_RLR, 0-11位有效,具有写保护功能,要操作先取消写保护
4.状态寄存 : IWDG_SR , 0-1位有效
独立看门狗操作步骤: