主程序中调用以下函数对窗口看门狗进行初始化:
wwdg_init(3,0x5f,0x7f);
以下为窗口初始化函数原型:
void wwdg_init(u8 pr,u8 w,u8 cnt)
{
rcc->apb1enr |=0x01<<11; //使能时钟
wwdg->cfr =(pr&(0x03))<<7; //设定分频
wwdg->cfr |=0x7f; // 设窗口为最大
wwdg->cr = cnt&(0x7f); //设定计数初值
wwdg->cr |=0x01<<7; //开窗口看门狗
wwdg->cfr &=~(0x7f);
wwdg->cfr |=w &(0x7f); //设定窗口值
wwdg->sr=0;
wwdg->cfr |=0x01<<9;
nvic_setpriority(wwdg_irqn,nvic_encodepriority(7-2,1,1));
nvic_enableirq(wwdg_irqn);
}
以下为中断服务函数:
void wwdg_irqhandler(void)
{
wwdg->sr =0;
wwdg->cr =0x7f;
}