zoukankan      html  css  js  c++  java
  • stm32 窗口看门狗 WWDG

    窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往下递减计数,当减到一个固定值0x40时还不喂狗的话,产生一个MCU复位,这个值叫窗口的下限,是固定的值,不能改变

    窗口看门狗(WWDG)的时钟来自PCLK1,即挂接在APB1总线上,APB1时钟最大为36M

    窗口值由配置寄存器WWDG_CFR的[6:0]位设置,所以最大值0x7F

    当递减计数器递减到0x40的时候,还不会马上产生复位,如果使能了提前唤醒中断,则产生提前唤醒中断,提醒喂狗,随后将复位

    WWDG配置步骤

    1.使能WWDG时钟
    2.设置WWDG窗口值
    3.设置WWDG预分频因子
    4.初始化NVIC外设,设置WWDG中断优先级
    5.初始化计数器值,使能WWDG
    6.使能WWDG中断
    7.编写WWDG中断处理函数

    举例

    void WWDG_IRQHandler()
    {
        if(WWDG_GetFlagStatus() == 1)
        {
            WWDG_SetCounter(0x70); //喂狗
            printf("WWDG_IRQHandler.
    ");
        }
        WWDG_ClearFlag();
    }
    
    void WWDG_init()
    {
        NVIC_InitTypeDef nvic = 
        {
            WWDG_IRQn,
            2,
            2,
            ENABLE
        };
    
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); //使能WWDG时钟
    
        WWDG_SetWindowValue(0x50); //设置WWDG窗口值
    
        WWDG_SetPrescaler(WWDG_Prescaler_8); //设置WWDG预分频因子
    
        NVIC_Init(&nvic); //初始化NVIC
    
        WWDG_Enable(0x70); //初始化计数器值,使能WWDG
    
        WWDG_ClearFlag();
    
        WWDG_EnableIT(); //使能WWDG中断
    }
  • 相关阅读:
    Spring解决循环依赖的三种方式
    MySQL深度分页
    MySQL大数据量分页查询方法及其优化
    java进程 cpu100%问题排查
    Java线程池如何合理配置核心线程数
    Btree和B+tree的区别
    Python3 for Linux 安装
    redis sentinel 相关参数及命令
    postman 连接mysql
    oracle-数据库的各种-锁-详解
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709566.html
Copyright © 2011-2022 走看看