STM32-WWDG窗口看门狗是一种在STM32微控制器中用于系统安全和稳定性的功能,它的主要任务是确保程序不会陷入无限循环或出现其他异常情况,从而导致系统崩溃。窗口看门狗与独立看门狗(IWDG)类似,但增加了额外的安全层,即窗口限制。 **WWDG 简介** STM32包含两种类型的看门狗:独立看门狗(IWDG)和窗口看门狗(WWDG)。WWDG的核心是一个7位递减计数器,其初始值可以通过用户设置。当计数器减到0x40时,如果未及时“喂狗”(即重载计数器),系统将发生复位。不过,WWDG的特性在于其窗口机制:在计数器达到特定的上限值(由用户设定的WR)之前喂狗也是无效的,只有当计数器值在0x40和用户设定的WR之间时,喂狗操作才会被接受。 **WWDG 功能框图剖析** 1. **窗口看门狗时钟**:来源于PCLK1时钟,最高可达36MHz,并由RCC时钟控制器控制。 2. **计数器时钟**:通过预分频器从CK计时器时钟分频得到,分频系数由CFR寄存器的WDGTB[1:0]位决定,可以是[0,1,2,3]。计数器时钟频率为PCLK1/4096/(2^WDGTB),据此可以计算出计数器递减一个计数值所需的时间。 3. **计数器**:7位递减计数器,其值存储在CR寄存器的T[6:0]位。计数器从0x7F递减到0x40时,若未喂狗且提前唤醒中断(EWI)未启用,系统会发生复位;如果启用了EWI,会在计数器到达0x40时产生中断,提示程序可能出现问题,需在中断服务程序中采取相应措施。 4. **窗口值**:下窗口值固定为0x40,上窗口值(WR)由用户在CFR寄存器的W[6:0]位设定,必须大于0x40且小于0x7F。窗口值的设定应根据需要监控的程序段运行时间来确定,以确保在程序执行完毕后有足够的窗口时间进行喂狗操作。 5. **计算看门狗超时时间**:超时时间Twwdg由Tpclk1、4096、2^wdgtb、(T[5:0] + 1)共同决定。通过调整这些参数,可以精确控制看门狗的复位触发时机。 在实际应用中,开发者需要根据系统需求设置合适的窗口值和计数器时钟分频系数,以确保在预期的程序执行周期内正确地喂狗,防止不必要的系统复位。同时,启用提前唤醒中断可以在检测到潜在问题时提供预警,便于在复位前保存关键数据或采取其他挽救措施。
- 粉丝: 8
- 资源: 126
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助