STM32F1基本配置5.窗口看门狗的配置

目录

    • 窗口看门狗和独立看门狗的区别
    • 窗口看门狗的中断
    • 窗口看门狗的配置
    • 窗口看门狗中断函数

窗口看门狗和独立看门狗的区别

1.窗口看门狗使用的是系统时钟源,所以要先进行时钟的使能

2.窗口看门狗由严格的喂狗时间段
窗口看门狗的初始化配置会设置计数器值,窗口比较值
初始化计数器值  > 窗口比较值 > 0x40
只能在 [ 0x40 , 窗口比较值 ] 的范围内进行喂狗
当计数器值到了0x3f的时候就会引起软件复位
具体的时钟分频和溢出值的计算可翻阅独立看门狗的文章

窗口看门狗的中断

窗口看门狗有对应的寄存器位EWI来使能中断(提前唤醒)
有WWDG_SR 第0位来标志中断(提前唤醒)

当EWI位被置1的时候,每当计数器值到了0x40的时候便产生中断
随之WWDG_SR第0位也会置1代表提前唤醒中断标志位

窗口看门狗的配置

  	NVIC_InitTypeDef NVIC_InitStructure; 
  	
  	//时钟使能
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);

	WWDG_SetPrescaler(pre);////设置时钟预分频值

	WWDG_SetWindowValue(wcom);//设置窗口比较值

	WWDG_Enable(count);	 //使能看门狗并设置计数器.                  

	WWDG_ClearFlag();   //去除提前唤醒标志位
	
	//注册中断
	NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn; 
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;   
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; 
	NVIC_Init(&NVIC_InitStructure);

	WWDG_EnableIT(); //使能窗口看门狗中断

窗口看门狗中断函数


	void WWDG_IRQHandler(void)
	{
		
		WWDG_SetCounter(0x7F);//重设计时器值
		
		WWDG_ClearFlag();	  //去除提前唤醒中断标志位
		
		//用户代码
	}

你可能感兴趣的:(STM32F1基本配置,STM32F1,C语言)