窗口看门狗(WWDT)复位

WWDT是一种与CPU同步的看门狗定时器,用于监控CPU状态并在异常时复位。它使用CPU时钟和预分频电路,提供计数器溢出和预警中断功能。在特定窗口期内才能安全清零计数器,否则会导致复位。该功能在系统稳定性中起关键作用,且在芯片复位后默认关闭,需软件初始化后启用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能描述
带窗口的看门狗是一个与CPU 同步运行的看门狗,目的是实时监控CPU 运行状态,在CPU 运行异
常的情况下复位CPU,避免不可预计的后果。
为了保证同步性和实时性,WWDT 使用CPU 时钟工作,内部有一个预分频电路,以产生同步计数
使能信号。
在以下情况时WWDT 产生CPU 复位:
⚫ 计数器溢出
⚫ 对WWDT 清零寄存器写0xAC 以外的值(可用于触发CPU 软复位)
⚫ 在窗口关闭期内对WWDT 清零寄存器写0xAC
当计数器达到溢出时间的75%时,会触发一个预警中断。

WWDT 工作方式
WWDT 在芯片复位后默认关闭,软件需对WWDTCON 寄存器写入0x5A 来启动WWDT。WWDT
启动后,如果软件在open window 内对WWDTCON 写0xAC,将清零计数器。WWDT 一旦使能后
不能关闭,直到下一次复位,WWDT 复位发生后将会关闭WWDT。
WWDT 使用PCLK 工作,内部预分频4096,分频后的计数器溢出长度可配置为1~1024(共8 个可
用档位),溢出时间长度计算公式如下:
tWWDT = TAPBCLK * 4096 * NCFG

WWDT 只允许在open window 内进行清除,否则将直接触发复位。使能窗口为计数器的后半周期,
软件在清零看门狗之前应注意查询计数值。

### GD32F450 窗口看门狗使用示例 #### 配置窗口看门狗的关键要素 窗口看门狗(WWDG)是一种用于检测并防止软件故障的机制。当应用程序进入异常状态时,可以通过触发复位来恢复系统正常工作。对于GD32F450而言,设置窗口看门狗涉及几个重要参数的选择和初始化函数调用。 - **使能RCC接口**:为了访问外设寄存器,必须先开启对应的时钟源。 ```c rcu_periph_clock_enable(RCU_WWDG); ``` - **设定预分频系数与计数值范围**:这两个值决定了定时周期以及允许喂狗的时间窗宽度。 ```c wwdg_init_struct.prescaler = WWDG_PRESSEL_DIV32; wwdg_init_struct.counter = 63; /* Maximum value */ ``` - **配置窗口上限阈值**:此参数定义了合法刷新操作的最大界限,超过该界限则会引发复位事件。 ```c wwdg_write_sr(wwdg, 0x7F); // 设置窗口上界为最大可能值 ``` - **激活窗口看门狗功能** ```c wwdg_enable(wwdg, WWDG_COUNTER_MAX); ``` 以上步骤确保了窗口看门狗能够按照预期的方式运作[^4]。 #### 实际应用中的注意事项 在实际编程实践中需要注意以下几点: - 定期重载计数器以避免意外复位发生; - 调整好预分频比例使得监视间隔既不过短也不过长; - 正确计算窗口上下限之间的关系以便于实现有效的自我保护逻辑。 通过上述方法可以有效地利用GD32F450内置的窗口看门狗特性提升嵌入式系统的健壮性[^1]。 ```c #include "gd32f4xx.h" int main(void) { __IO uint8_t counter; /* 初始化硬件资源 */ rcu_periph_clock_enable(RCU_WWDG); struct wwdg_configuration { uint32_t prescaler; uint32_t counter; } config = { .prescaler=WWDG_PRESSEL_DIV32,.counter=63 }; wwdg_write_sr(WWDG, 0x7F); // 设定最高安全级别 wwdg_enable(WWDG, WWDG_COUNTER_MAX); while (1){ /* 主业务处理流程 */ /* 刷新WWDT计数器 */ if (--counter == 0) { wwdg_refresh(WWDG, 63); counter = 100; // 自定义刷新频率 } } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小菜鸡叶不凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值