独立看门狗(IWDG)或窗口看门狗(WWDG)?
我仍在寻找该问题的答案: 为什么stm32 MCU具有完美的看门狗(我的意思是窗口看门狗(WWDG)),却有一个简单的看门狗(独立看门狗(IWDG))? 我发现此页面说: 意法半导体(ST Microelectronics)拥有一系列Cortex-M3器件。M3在低端嵌入式设备中已变得非常流行,ST的STM32F代表了这些部分(尽管WDT是ST的附加组件,并不一定反映其他厂商的实现)。STM32F具有两种不同的保护机制。“独立看门狗”是一种漂亮的香草设计,除了易于使用之外,几乎没有其他用途。但是他们的Window Watchdog提供了更强大的保护。当倒数计时器到期时,将产生复位,可以通过重新装入计时器来阻止复位。没什么特别的。但是,如果重新加载太快,系统也会重置。在这种情况下,“太快”由一个值编程到控制寄存器中。 另一个很酷的功能:它可以在重置之前生成中断。编写一些代码来捕获中断,您可以采取一些措施,例如,将系统置于安全状态或快照数据以进行调试。ST建议使用ISR重新加载看门狗-即,踢狗以免复位。不要接受他们的建议。如果程序崩溃,中断处理程序可能会继续正常运行。使用ISR重新加载WDT会使窗口监视程序的全部原因无效。 而这个: 意法半导体的新系列STM32F4 Cortex™-M4 CPU具有两个独立的看门狗。一个由其自身的内部RC振荡器运行。这意味着各种事情都可能在CPU中崩溃,并且WDT仍然会触发。还有一个“窗口监视程序”(WWDT),它需要代码频繁但不频繁地对其进行挠痒痒。这是确保随机写入保护机制的崩溃代码不会引起WDT异常的一种非常有效的方法,并且WWDT可以在断言复位之前不久产生一个中断。 好的,让我们看一下参考手册: STM32F10xxx具有两个嵌入式看门狗外设,这些外设提供了高安全性,定时精度和使用灵活性的组合。两个看门狗外围设备(独立和窗口)都用于检测和解决由于软件故障引起的故障,并在计数器达到给定的超时值时触发系统复位或中断(仅窗口看门狗)。独立的看门狗(IWDG)由其自己的专用低速时钟(LSI)提供时钟,因此即使主时钟发生故障也保持活动状态。窗口看门狗(WWDG)时钟是从APB1时钟开始预分频的,并具有可配置的时间窗,可对其进行编程以检测异常的过早或过早的应用程序行为。IWDG最适合需要看门狗作为主应用程序之外的完全独立进程运行的应用程序,但时序精度约束较低。WWDG最适合要求看门狗在准确的时序窗口内做出反应的应用。 窗口看门狗用于检测软件故障的发生,通常由外部干扰或不可预见的逻辑条件引起,导致应用程序放弃其正常顺序。看门狗电路会在编程的时间段到期时生成MCU复位,除非程序在T6位清零之前刷新倒数计数器的内容。如果在递减计数器达到窗口寄存器值之前刷新(控制寄存器中的)7位递减计数器值,也会产生MCU复位。这意味着必须在有限的窗口中刷新计数器。 如您所见,他们都没有说过为什么有两个看门狗。如果我问这两个看门狗之间有什么区别,您将计算出上面可以看到的所有功能,如果您想对两者进行比较,显然Windows看门狗(WWDG)将是赢家!那么为什么有两个看门狗? 我想知道什么时候应该使用IWDG,什么时候需要WWDG? 并有什么理由告诉我们为什么他们用这个名字叫第二只手表->“ Window watchdog”?