GD32F103VE窗口看门狗定时器

GD32F103VE窗口看门狗定时器

看门狗定时器(WDGT)有两个:
1,独立看门狗定时器(FWDGT)
2,窗口看门狗定时器(WWDGT)

窗口看门狗定时器开启后,其7位向下递减计数器工作。
当"向下递减计数器"的计数值达到"预设的窗口值"时,会命令CPU复位;
为了不让窗口看门狗定时器产生复位CPU信号,必须按时设置"窗口看门狗定时器"计数器初始值,避免其引起CPU复位。

#include "WWDGT.h"
#include "stdio.h" //使能sprintf(),printf()

/*
看门狗定时器(WDGT)有两个:
1,独立看门狗定时器(FWDGT)
2,窗口看门狗定时器(WWDGT)

窗口看门狗定时器开启后,其7位向下递减计数器工作。
当"向下递减计数器"的计数值达到"预设的窗口值"时,会命令CPU复位;
为了不让窗口看门狗定时器产生复位CPU信号,必须按时设置"窗口看门狗定时器"计数器初始值,避免其引起CPU复位。
*/

void WWDGT_Init(void);
void Check_WWDGT_Reset(void);
void MySysRstSrcRecord(void);

//函数功能:配置"窗口看门狗定时器",更新"计数器初始值"的时间t满足,28.5ms

main.c程序如下:

#include "gd32f10x.h" //使能uint8_t,uint16_t,uint32_t,uint64_t,int8_t,int16_t,int32_t,int64_t,bool
#include "delay.h"
#include "WWDGT.h"
#include "stdio.h"  //使能printf(),sprintf()

#include "UART3.h"

uint8_t Main_Count;
uint8_t Main_Cnt;

const char CPU_Reset_REG[]="\r\nCPU reset!\r\n";
const char CPU_Is_Running_REG[]="\r\nCPU is running!\r\n";
int main(void)
{

	//NVIC_PRIGROUP_PRE4_SUB0:抢占优先级为4bit(取值为0~15),子优先级为0bit(没有响应优先级)
	//NVIC_PRIGROUP_PRE3_SUB1:抢占优先级为3bit(取值为0~7),子优先级为1bit(取值为0~1)
	//NVIC_PRIGROUP_PRE2_SUB2:抢占优先级为2bit(取值为0~3),子优先级为2bit(取值为0~3)
	//NVIC_PRIGROUP_PRE1_SUB3:抢占优先级为1bit(取值为0~1),子优先级为3bit(取值为0~7)
	//NVIC_PRIGROUP_PRE0_SUB4:抢占优先级为0bit(没有抢占优先级),子优先级为3bit(取值为0~15)
	nvic_priority_group_set(NVIC_PRIGROUP_PRE4_SUB0);//设置系统中断优先级"抢占优先级为4bit,子优先级为0bit"
  INTX_ENABLE();//开启所有中断
	GD32F103_UART3_Init(115200);

	printf("%s",CPU_Reset_REG);//调试串口输出"\r\nCPU reset!\r\n"
	MySysRstSrcRecord();

	delay_init();

//	Check_WWDGT_Reset();//检查"窗口看门狗定时器"是否复位
	WWDGT_Init();//配置"窗口看门狗定时器",更新"计数器初始值"的时间t满足,28.5ms=30)//每隔30*30=900毫秒,串口输出一次数据
		{
			Main_Count++;
			printf("%s",CPU_Is_Running_REG);//调试串口输出"\r\nCPU is running!\r\n"
			Main_Cnt=0;
		}
	}
}

GD32F103VE窗口看门狗定时器_第1张图片

 

你可能感兴趣的:(产品研发,单片机,嵌入式硬件,GD32,窗口看门狗定时器)