STM32F103ZET6学习记录-窗口看门狗

觉得用处不是很大,简略写了。

窗口看门狗本质是一个7位递减的计数器。只是它的下限是0X40(无法修改),上线可以通过我们自己配置(但是要保证大于下限。),当计数器的值高于上限和低于下限的时候被刷新的话,就会产生一次复位信号。

作用和独立看门狗类似。

刷新的时候可以使用提前唤醒中断来喂狗,否则要计算超时时间(一般不用)。有闲心再来放上相关图片。

创建wwdg文件夹,添加wwdg的文件,添加编译路径。

wwdg.h

#ifndef _WWDG_H
#define _WWDG_H

#include "system.h"
void WWDG_Init(void );





#endif

wwdg.c

#include "wwdg.h"
#include "led.h"
#include "stdio.h"
void WWDG_Init(void )
{
		NVIC_InitTypeDef NVIC_InitStructure;
		RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG,ENABLE);
		WWDG_SetWindowValue(0x5f);								//设立上窗口值
		WWDG_SetPrescaler(WWDG_Prescaler_8);			//设置分频系数

	
		//设置优先级
    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_Enable(0x7f);						//使能计数器的同时给计数器赋初值
		WWDG_ClearFlag();							//排除其他可疑原因
		WWDG_EnableIT();							//开启窗口看门狗的中断
}

//使用中断喂狗
void WWDG_IRQHandler(void)
{
		WWDG_SetCounter(0x7f);
		WWDG_ClearFlag();
	led2=!led2;

}

main.c


#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "pwm.h"
#include "Usart.h"
#include "key.h"
#include "wwdg.h"
//时间:2020-1-17
//制作者:SaBo
//适用:STM32F103ZET6 (普中科技 PZ6800L)

/*********************************************
	程序写好后,下载到开发板上,打开我们的串口调试助手,
	设置波特率为9600,数据位8位,停止位1位
	led2会不断地闪烁
	led1的闪烁表明我们的程序是否正常在进行。(检测作用)
*********************************************/


int main()
{
    SysTick_Init(72);
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    LED_Init();
    USART1_Init(9600);

    led1=0;
    delay_ms(500);
    WWDG_Init();
    while(1)
    {
        led1=1;
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值