了解MCU看门狗功能及应用

1、看门狗概念

看门狗–定时器(不属于基本定时器、通用定时器、高级定时器)

定义:

看门狗,又叫wachdog timer,是一个定时器电路,一般有一个输入,叫喂狗(kicking the dog/service the dog),一个输出到MCU的RST端,MCU正常工作的时候,每隔一段时间就输出一个信号区喂狗端,给WDT清零,如果超过规定时间不喂狗(一般在程序跑飞时),WDT定时超过,就会给一个复位信号到MCU,使MCU复位。防止MCU死机。看门狗的作用就是防止程序发生死循环,或者说程序跑飞。

在单片机构成的微型计算机系统中,由于单片机的工作常常会受到外界电磁场的干扰,造成各种寄存器和内部的数据混乱,会导致程序指针错误,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,不在程序区,取出错误的程序指令等,都有可能会陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续正常工作,导致整个系统陷入停滞状态,发生不可预料的后果。

看门狗,又叫由叫watchdog,本质上来说就是一个定时器电路,一般有一个输入和输出,其中输入叫喂狗,输出一般连接到另外一个部分的复位端,一般连接到单片机。看门狗的功能是定期查看芯片内部情况,一旦发生错误就想芯片发出重启信号。看门狗命令在程序中断中拥有最高的优先级。

输入端:喂狗(定时器刷新计数器)–一个函数

输出端:连接复位电路,一旦计数器从最大值计数到0,还没有喂狗,就直接复位

重装载:1000

看门狗就会从1000从上而下计数,0–1000中间没有喂狗,那么计数器数到0,那么就会复位,如果0–1000范围内喂狗,那么就代表程序正常执行,不会复位。

假如说我们的一个程序执行1500ms,那么我们就可以将我们看门狗运行周期设置为大于1500ms时间,假如设置为2000ms,那么我们就可以检测程序的运行时间,如果2000ms还没有喂狗,代表程序卡死了,就需要复位

2、单片机中的看门狗

 

 看门狗:独立看门狗  窗口看门狗

独立看门狗的时钟:40KHZ(LSI)

窗口看门狗的时钟:APB1分频得到

功能描述:

在键寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗;此时计数器开始从其复位值0xFFF递减计数。当计数器计数到末尾0x000时,会产生一个复位信号(IWDG_RESET)。无论何时,只要在键寄存器IWDG_KR中写入0xAAAA, IWDG_RLR中的值就会被重新加载到计数器,从而避免产生看门狗复位 。

0xcccc–开启看门狗

0xaaaa–喂狗

IWDG_RESET–复位信号

IWDG_KR—键寄存器

IWDG_RLR–重装载寄存器

看门狗设置部分

设置一个1s的周期进行喂狗???

独立看门狗时钟40Khz

我们只需要设置预分频寄存器和重装在寄存器即可

 预分频寄存器(IWDG_PR)

 

 预分屏:64分屏

重装载:625

周期 = (64/40khz)*625ms  周期:1000ms

 窗口看门狗

窗口看门狗通常被用来检测,由外部干扰或不可预见的逻辑条件造成的应用程序背离正常运行序列产出的软件故障。除非递减计数器的值在T6变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。在递减计数器打到窗口寄存器数值之前,如果7位递减计数器数值(在控制寄存器中)被刷新,那么也产生一个MCU复位。这表明递减计数器需要在一个有限的时间窗口中被刷新。

特性:

 可编程的自由运行递减计数器

条件复位

—当递减计算器的值小于0x40,(若看门狗被启动)则产生复位。

—当递减计算器在窗口外被重新装载,(若看门狗被启动)则产生复位。见0.

如果启动了看门狗并且允许中断,当递减计数器等于0x40时产生早期唤醒(EWI),它可以被用于重装载计算器以避免WWDG复位

下限值:0x40–计算器递减到0x40还没有喂狗,那么就会产生复位

上限值:自定义的,不要超过最大的计数周期,计算器值大于上限值之前喂狗也会去复位。

 看门狗配置:

作者:熬不了夜的程序猿

物联沃分享整理
物联沃-IOTWORD物联网 » 了解MCU看门狗功能及应用

发表评论