stm32 窗口看门狗 WWDG

来源:互联网 发布:黑色沙漠游侠捏脸数据 编辑:程序博客网 时间:2024/05/17 03:28

窗口看门狗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.\n");    }    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中断}