看门狗(stm32笔记) 简介WDGWatchdog看门狗看门狗可以监控程序的运行状态当程序因为设计漏洞、硬件故障、电磁干扰等原因出现卡死或跑飞现象时看门狗能及时复位程序避免程序陷入长时间的罢工状态保证系统的可靠性和安全性看门狗本质上是一个定时器当指定时间范围内程序没有执行喂狗重置计数器操作时看门狗硬件电路就自动产生复位信号STM32内置两个看门狗APB1时钟独立看门狗IWDG独立工作对时间精度要求较低窗口看门狗WWDG要求看门狗在精确计时窗口起作用独立看门狗框图LSI内部低速时钟40KHz进入预分频器8位最大256分频。随后12位递减寄存器每来一个时钟就减一个数。直到减少到0产生IWDG复位。正常运行时为了避免复位。我们可以往重装载寄存器里写入一个值。在键寄存器里写入特定的值控制电路进行喂狗这时重装载寄存器的值就会复制到递减寄存器中。这时候递减计数器就会重新变回重装载寄存器的值重新自减运行。键寄存器键寄存器本质上是控制寄存器用于控制硬件电路的工作在可能存在干扰的情况下一般通过在整个键寄存器写入特定值来代替控制寄存器写入一位的功能以降低硬件电路受到干扰的概率问为什么不用一个控制寄存器的一个位来控制是否喂狗呢答上面第二点就是原因所在控制寄存器只设置一个位可能会受到干扰造成这一位数值的改变。而键寄存器是写入整个16位寄存器抗干扰能力大。独立看门狗的超时时间窗口看门狗框图PCLK1时钟36MHz进入看门狗预分频器进行分频。随后分频后的时钟驱动递减计数器运行。递减计数器中只有T5到T0位是有效位。T6位作为溢出标志位。T6 1时没溢出。T6 0时溢出。也可以理解为T6到T0位由111 1111减到100 0000时下一次100 0000 到011 1111开始产生溢出T6顺着上方的线路产生复位.WDGA是窗口看门狗的激活位。WDGA 1启用窗口看门狗。WDGA 0不启用窗口看门狗。上面的看门狗配置寄存器写入最早时间假设一开始下面自减计数器的值小于上面寄存器的值此时可以运行执行自减操作。如果喂狗时导致计数器的值大于最早时间那就说明喂早了开始复位。喂狗太早太晚的情况是计数器自减到0窗口看门狗的工作特性递减计数器T[6:0]的值小于0x40时WWDG产生复位递减计数器T[6:0]在窗口W[6:0]外被重新装载时WWDG产生复位递减计数器T[6:0]等于0x40时可以产生早期唤醒中断EWI用于重装载计数器以避免WWDG复位定期写入WWDG_CR寄存器喂狗以避免WWDG复位窗口看门狗的超时时间独立看门狗和窗口看门狗的对比