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