专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

STM32窗口看门狗程序

作者:佚名   来源:本站原创   点击数:  更新时间:2014年08月17日   【字体:

 头文件及完整例程下载:http://www.51hei.com/f/stm32标准例程库函数.rar 
程序分析:

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "wdg.h"
//STM32开发板实验7
//窗口看门狗实验  
 int main(void)
 {
delay_init();     //延时函数初始化  
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
// uart_init(9600); //串口初始化为9600
  LED_Init();
// KEY_Init();          //按键初始化  
LED0=0;
delay_ms(300);  
WWDG_Init(0X7F,0X5F,WWDG_Prescaler_8);//计数器值为7f,窗口寄存器为5f,分频数为8   
  while(1)
{
LED0=1;     
}   
}
窗口看门狗的初始化
void WWDG_Init(u8 tr,u8 wr,u32 fprer)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);  //   WWDG时钟使能
 
WWDG_CNT=tr&WWDG_CNT;   //初始化WWDG_CNT.   
WWDG_SetPrescaler(fprer);////设置IWDG预分频值
 
WWDG_SetWindowValue(wr);//设置窗口值
 
WWDG_Enable(WWDG_CNT); //使能看门狗 , 设置 counter .                  
 
WWDG_ClearFlag();//清除提前唤醒中断标志位 
 
WWDG_NVIC_Init();//初始化窗口看门狗 NVIC
 
WWDG_EnableIT(); //开启窗口看门狗中断
}  

看门狗的中断函数
void WWDG_IRQHandler(void)
{
 
WWDG_SetCounter(WWDG_CNT);  //当禁掉此句后,窗口看门狗将产生复位
 
WWDG_ClearFlag();  //清除提前唤醒中断标志位
 
LED1=!LED1; //LED状态翻转


看门狗的喂狗函数
WWDG_SetCounter(WWDG_CNT);  //当禁掉此句后,窗口看门狗将产生复位
 
关闭窗口