STM32学习笔记(十一)

STM32F103ZET6之窗口看门狗实验



前言

对于STM32的学习可分为3个版本。
1.寄存器版本
2.库函数版本
3.HAL库版本
由于个人原因,选择库函数版本来进行STM32的学习。


提示:软件安装等问题,不进行讲解!!!

一、窗口看门狗相关概述

1.概念

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、相关寄存器

1.控制寄存器(WWDG_CR)

在这里插入图片描述

2.配置寄存器(WWDG_CFR)

在这里插入图片描述

3.状态寄存器(WWDG_SR)

在这里插入图片描述

三、操作步骤

1.窗口看门狗超时时间计算

在这里插入图片描述

2.操作步骤

在这里插入图片描述

四、程序源码

1.wwdg.h

代码如下:

#ifndef __WWDG_H
#define __WWDG_H

#include "sys.h"

void WWDG_Init(u8 tr,u8 wr,u32 fprer );//初始化WWDG
void WWDG_Set_Counter(u8 cnt);//设置WWDG的计数器
void WWDG_NVIC_Init(void);
#endif

2.wwdg.c

代码如下:

#include "wwdg.h"
#include "led.h"

//保存WWDG计数器的设置值,默认为最大. 
u8 WWDG_CNT=0x7f; 

void WWDG_Init(u8 tr,u8 wr,u32 fprer)//tr:计数器值  wr:窗口值 fprer:分频系数
{
    
    
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_WWDG, ENABLE);//使能看门狗时
	WWDG_CNT=tr&WWDG_CNT;//取tr的0-6位
	WWDG_SetPrescaler(fprer);//设置分频系数
	WWDG_SetWindowValue(wr);//设置上窗口值
	WWDG_Enable(WWDG_CNT);//使能看门狗
	WWDG_ClearFlag();//清除提前唤醒中断标志位
	WWDG_NVIC_Init();//分组
	WWDG_EnableIT();//开启提前唤醒中断
}
void WWDG_NVIC_Init(void)//中断优先级设置
{
    
    
	NVIC_InitTypeDef NVIC_Initstr;
	NVIC_Initstr.NVIC_IRQChannel=WWDG_IRQn;
	NVIC_Initstr.NVIC_IRQChannelCmd=ENABLE;
	NVIC_Initstr.NVIC_IRQChannelPreemptionPriority=2;
	NVIC_Initstr.NVIC_IRQChannelSubPriority=3;
	NVIC_Init(&NVIC_Initstr);
}
void WWDG_Set_Counter(u8 cnt)//喂狗
{
    
    
	WWDG_Enable(cnt);
}
void WWDG_IRQHandler(void)//中断服务函数
{
    
    
	WWDG_Set_Counter(WWDG_CNT);//喂狗
	WWDG_ClearFlag();
	LED1=!LED1;
}

3.main.c

代码如下:

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "beep.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();
    LED_Init();
	Beep_Init();
	KEY_Init();
	uart_init(115200);
	EXTIX_Init();
	LED2=0;
	delay_ms(300);
	WWDG_Init(0x7F,0x5F,WWDG_Prescaler_8);
	while(1)
	{
    
    
		LED2=1;
	}		
}

五、实验结果

当中断服务函数中,无喂狗操作,则LED1反复翻转。LED2通电后点亮,经过300ms后熄灭,很快便重新点亮,经过300ms后熄灭,反复
当中断服务函数中,有喂狗操作,则LED1反复翻转。LED2通电后点亮,经过300ms后熄灭。


总结

看门狗完结!!!

猜你喜欢

转载自blog.csdn.net/weixin_44935259/article/details/112788352
今日推荐