12 STM32 - 窗口看门狗

12.1 窗口看门狗简介:

窗口看门狗(Window Watchdog, WWDG)是F4芯片上的另外一个看门狗,通常用来监测由外部干扰或不可预见的应用程序软件故障。这种机制能够确保系统的稳定性和可靠性,避免由于系统崩溃或死机等问题对整个系统造成的影响。窗口看门狗,之所以称为窗口,是因为其喂狗时间是一个有上下限的范围内,可以通过设定相关寄存器,设定其上限时间和下限时间:喂狗的时间不能过早也不能过晚。过早喂狗或过晚喂狗都会导致系统重启。
在这里插入图片描述

如图所示,CNT的递减寄存器值递减计数,当递减到0x3F时,会产生复位信号,所以必须在0x40之前喂狗;另外,在配置寄存器 (WWDG_CFR)的后六位(W[6:0])存放比较值,如果喂狗时递减寄存器的值大于该比较值也会产生复位信号,所以必须在W[6:0]之后喂狗。W[6:0]的值是用户设置的,配置时要大于0x40,否则没有意义。

12.2 常用寄存器:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

12.3 应用代码

void WWDG_Init(void)
{
    NVIC_InitTypeDef NVIC_InitStructure;
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE); //使能窗口看门狗时钟
    
    WWDG_CNT=0x7F&WWDG_CNT;   //初始化WWDG_CNT. 
    WWDG_SetPrescaler(8); //设置分频值
    WWDG_SetWindowValue(0x5F); //设置窗口值
    WWDG_Enable(WWDG_CNT);  //开启看门狗
    
    NVIC_InitStructure.NVIC_IRQChannel=WWDG_IRQn;  //窗口看门狗中断
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x02;  //抢占优先级为2
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03;        //子优先级为3
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //使能窗口看门狗
    NVIC_Init(&NVIC_InitStructure);
    
    WWDG_ClearFlag();//清除提前唤醒中断标志位
    WWDG_EnableIT();//开启提前唤醒中断
}

void WWDG_IRQHandler(void)
{
    WWDG_SetCounter(WWDG_CNT); //重设窗口看门狗值
    WWDG_ClearFlag(); //清除提前唤醒中断标志
}
  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值