概述
看门狗定时器(Watchdog Timer, WDG)是一种硬件定时器,主要用于检测和恢复由软件故障引起的系统异常。它是一个自动递减的计数器,期间需要系统周期性地“喂狗”(复位计数器),否则计数器归零后会触发复位。 WDG 可以分为独立看门狗(Independent WDG)和系统看门狗(System WDG),其中系统看门狗又可以分为安全看门狗和非安全看门狗, 看门狗的架构图如下:
功能特性
共同特性
一旦使能后,不能除能。
可选的提前中断功能,可在看门狗超时前的可编程时间生成中断。
每个看门狗定时器都有独立的启动原因。
独立看门狗特有的特性
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KM0 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4 或 KR4 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM0 处于调试模式时会自动暂停。
使能后,超时时间不能改变。
由 AON 区域的电源和时钟源供电。
可以配置在休眠模式下是否工作。
可以通过提前中断从休眠模式唤醒系统。
当 KM4_NS 或 KM4_TZ 处于调试模式时会自动暂停。
使能后,超时时间只能减小,不能增大。
系统看门狗特有的特性
当 KM0 处于调试模式时,WDG0 暂停工作;当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG2 暂停工作; 当 KR4 处于调试模式时,WDG3 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4 处于调试模式时,WDG1 和 WDG2 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
当 KM4_NS 处于调试模式时,WDG0 暂停工作; 当 KM4_TZ 处于调试模式时,WDG1 和 WDG2 暂停工作。
在休眠模式下暂停工作,并保持设置不变。
使能后,窗口保护功能和超时时间将无法更改。
备注
独立看门狗和系统看门狗都有窗口功能,但是由于 AON 的 100k 时钟是未校准的时钟,所以不建议使能独立看门狗的窗口功能。
硬件默认使能
独立看门狗在 Efuse 中默认使能,系统每次启动时 IWDG 都是使能的,IWDG 的超时时间是 64 秒, 同时软件中会创建 rtos 定时器,每 500 毫秒执行一次喂狗任务。
默认不使能 IWDG
默认不使能 IWDG
默认不使能 IWDG
默认不使能 IWDG
独立看门狗在 Efuse 中默认使能,系统每次启动时 IWDG 都是使能的,IWDG 的超时时间是 64 秒, 同时软件中会创建 rtos 定时器,每 500 毫秒执行一次喂狗任务。
低功耗模式
在 Deepsleep 状态下,所有看门狗都不能工作。
在 sleep 状态下,系统看门狗不能工作,独立看门狗可以配置在 sleep 状态下继续工作或者暂停工作。
独立看门狗可以在 sleep 状态下继续工作的情形,推荐使能提前中断用于唤醒系统,执行提前中断函数进行喂狗。
复位域
在看门狗计数到 0 时,会触发全局复位。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
在看门狗计数到 0 时,会触发全局复位。
独立看门狗在计数器计数到 0 后会触发全局复位。
系统看门狗可以通过软件配置在计数到 0 后触发全局复位或者局部复位(复位所在的核以及看门狗本身)。
应用示例
SDK 提供了两类功能示例,帮助开发者了解和使用看门狗功能:
mbed 示例
路径:
{SDK}\component\example\peripheral\mbed\Watchdog\mbed_watchdog
展示如何在 mbed 环境中实现看门狗控制。
raw 示例
路径:
{SDK}\component\example\peripheral\raw\Watchdog\raw_watchdog
展示如何在无抽象层的情况下直接控制看门狗。
以下是对 raw 示例功能的简要说明:
raw_watchdog 演示如何设置和控制看门狗;
备注
要了解示例支持的芯片,请查看示例路径下的 README.md
文件。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_wdg.h
。