继做了SYSTICK实验后,继续进⾏第8个实验-WWDG窗⼝看门狗实验,本实验通过设置窗⼝看门狗WWDG间断时间来中断来定期的检查是否出错,在WWDG中断函数中加⼊了流⽔灯⽤来测试是否运⾏了看门狗程序中断,⽤PB5-LED1通过窗⼝看门狗间断时间来闪烁,编程⼯程⼤致和USART实验过程差不多,先是开启系统时钟,然后GPIO端⼝时钟,然后复⽤功能时钟AFIO,然后各个模块⽤的的时钟,,呵呵,之后进⼊各个模块初始化,设置,编写⼦程序,中断的话,要在中断函数中填写某模块的中断触发处理函数,重要的是在CONFG.H函数中开启模块的声明,差不多是这样的了。
以下为WWDG函数主要部分:
//WWDG窗⼝看门狗设置初始化void WWDG_Config(void){
//软件看门狗初始化
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE); WWDG_SetPrescaler(WWDG_Prescaler_8); //时钟8分频4ms // (PCLK1/4096)/8= 244 Hz (~4 ms)
WWDG_SetWindowValue(65); //计数器数值
WWDG_Enable(127); //启动计数器,设置喂狗时间 // WWDG timeout = ~4 ms * 64 = 262 ms WWDG_ClearFlag(); //清除标志位 WWDG_EnableIT(); //启动中断}
*****************************************************void WWDG_IRQHandler(void)
{
WWDG_SetCounter(0x7F); //更新计数值 WWDG_ClearFlag(); //清除标志位 switch(WWDGFLAG) {
case 0:
GPIO_SetBits(GPIOB, GPIO_Pin_5); break; case 1:
GPIO_ResetBits(GPIOB, GPIO_Pin_5); break; default: break; }
WWDGFLAG=!WWDGFLAG;}
以下为WWDG函数结果部分:
因篇幅问题不能全部显示,请点此查看更多更全内容