最近在做低功耗项目时,遇到了看门狗不好处理的问题。在 ST 的各系列 MCU 中,看门狗应该算是使用配置起来最简单的一个外设了。我们通常仅需要配置很少的配置项,但是,一旦要配合低功耗模式则配置就比较麻烦了。MCU 中有两只狗,一只叫 Independent watchdog (IWDG);另一只叫 System window watchdog (WWDG)。下面是这两只狗的简单介绍!
IWDG
IWDG 基本就等同于我们独立使用的看门狗芯片。最适合那些要求看门狗作为一个完全独立的进程在主应用程序之外运行,但时间精度约束较低的应用程序。独立的看门狗(IWDG)由其自己的专用低速时钟(LSI)提供时钟。因此即使主时钟发生故障,IWDG 仍然可以保持活动状态。下面是 IWDG 的框图:
对预分频寄存器(IWDG_PR)、重装寄存器(IWDG_RLR)和窗口寄存器(IWDG_WINR)的写访问受到保护。要修改它们,用户必须首先在密钥寄存器(IWDG_KR)中写入代码 0x00005555
。写入其他任意值,寄存器访问将再次受到保护。例如,在配置完成 IWDG 后,正常的喂狗操作就会导致寄存器访问将再次受到保护。
IWDG_KR
当在密钥寄存器(IWDG_KR)中写入值 0x0000CCCC
时,计数器开始从 IWDG_RLR 的重置值开始计数。当到达