本文主要是介绍19. 窗口看门狗-WWDG,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
窗口看门狗概述
常用寄存器和库函数配置
窗口看门狗实验
#ifndef __WWDG_H
#define __WWDG_H#include "sys.h"void WWDG_Init(u8 tr,u8 wr,u32 fprer);#endif
#include "stm32f4xx.h"
#include "delay.h"
#include "wwdg.h"
#include "led.h"u8 WWDG_CNT = 0x7F;void WWDG_Init(u8 tr,u8 wr,u32 fprer)
{NVIC_InitTypeDef NVIC_InitStructure;// 使能窗口开门狗时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);// 初始化WWDG_CNTWWDG_CNT = tr & WWDG_CNT;// 设置分频值WWDG_SetPrescaler(fprer);// 设置窗口值WWDG_SetWindowValue(wr);// 开启看门狗WWDG_Enable(WWDG_CNT);//初始化WWDG中断NVIC_InitStructure.NVIC_IRQChannel = WWDG_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x03;NVIC_Init(&NVIC_InitStructure);// 清除提前唤醒中断标志位WWDG_ClearFlag();// 开启提前唤醒中断WWDG_EnableIT();
}// 窗口看门狗中断服务程序
void WWDG_IRQHandler(void)
{// 重设窗口看门狗值WWDG_SetCounter(WWDG_CNT);// 清除提前唤醒中断标志位WWDG_ClearFlag();LED1 = !LED1;
}
#include "stm32f4xx.h"
#include "beep.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "exti.h"
#include "iwdg.h"
#include "wwdg.h"int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);delay_init(168);LED_Init();KEY_Init();LED0 = 0;delay_ms(300);WWDG_Init(0x7F,0x5F,WWDG_Prescaler_8);while(1){LED0 = 1;}}
这篇关于19. 窗口看门狗-WWDG的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!