这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » GD32 » 【GD32F470ZGT6】FWDGT测试(GD32库)

共1条 1/1 1 跳转至

【GD32F470ZGT6】FWDGT测试(GD32库)

助工
2025-01-19 23:48:22     打赏

1、FWDGT是GD32内部的独立看门狗外设,实际上也是递减定时器的一种,不同的地方是看门狗定时器是一旦开启就无法关闭,并且使用的是独立IRC时钟,即便系统完全卡死也不会影响FWDGT的正常工作,而且必须在定时器递减到一定数值前重新赋值定时器,否则就会使系统发生软件重启行为

以下说明GD32F470ZGT6外设FWDGT的使用

FWDGT配置,使用内部FWDGT_PSC_DIV64

//配置FWDGT
fwdgt_config(2 * 500, FWDGT_PSC_DIV64);
fwdgt_enable();

完整代码

#include "main.h"
#include <stdio.h>
#include "gd32f4xx.h"
#include "systick.h"
#include "bsp_uart.h"

int main(void)
{


	systick_config();
	bsp_uart_init();
	

		if(RESET != rcu_flag_get(RCU_FLAG_FWDGTRST)){
			printf("Reset By FWDGT\n");
			rcu_all_reset_flag_clear();
		}
		//配置FWDGT
		//IRC40K) / 64 = 0.625 KHz,定时 (1/0.625K)*1000=1.6s
		fwdgt_config(2 * 500, FWDGT_PSC_DIV64);//IRC定时效果不精准
		fwdgt_enable();
    while(1) {
			delay_1ms(1400);
			printf("FWDGT1.\n");
			delay_1ms(500);
		  printf("FWDGT2.\n");

    }
}

2、实验结果

}5OE]52$SL4ZF1%Z90}U8R7.png

测试结果说明:

为什么printf("FWDGT2.\n")没有得到执行呢?是因为看门狗定时器的定时时间是1.6S,超过这个时间系统就会重启

屏蔽第二个延时函数

int main(void)
{


	systick_config();
	bsp_uart_init();
	

		if(RESET != rcu_flag_get(RCU_FLAG_FWDGTRST)){
			printf("Reset By FWDGT\n");
			rcu_all_reset_flag_clear();
		}
		//配置FWDGT
		//IRC40K) / 64 = 0.625 KHz,定时 (1/0.625K)*1000=1.6s
		fwdgt_config(2 * 500, FWDGT_PSC_DIV64);//IRC定时效果不精准
		fwdgt_enable();
    while(1) {
			delay_1ms(1400);
			printf("FWDGT1.\n");
			//delay_1ms(500);
		  printf("FWDGT2.\n");

    }
}

29OAQ])RJTNRVHN]2_}V{HD.png

系统超时1.6s仍会触发重启,printf("FWDGT2.\n")在看门狗超时触发前得到了执行




关键词: GD32F470ZGT6 FWDGT    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]