GD32F4xx系列的看门狗配置

GD32F4xx系列的独立看门狗配置:
查看GD32F4的独立看门狗有一个32K的独立时钟源,适用于粗略计时
在这里插入图片描述
不同的预分频系数下最大和最小的超时时间:
在这里插入图片描述
看门狗超时时间计算公式:
T=Count / (32*pre);单位ms
T 为看门狗超时时间。
Count 为看门狗的计数值
pre 为看门狗的预分频系数

1,添加独立看门狗外设驱动库函数文件到工程中。
在这里插入图片描述
2,初始化独立看门狗。

//初始化:
	fwdgt_write_enable(); 
	fwdgt_config(reload_value, prescaler_div);//配置看门狗的计数值和预分频系数
	fwdgt_enable();
//喂狗:
fwdgt_counter_reload();
//关闭看门狗:
fwdgt_write_disable();

3,测试验证
开启看门狗之后先进行一次喂狗后等待延时超过1s,发现程序无法运行到后面去,后面的指令也无法执行,查看系统时钟计数值并没有一直在增加,而是一直在复位变成0,说明超过喂狗时间没有喂狗之后看门狗复位成功。
在这里插入图片描述
去掉延时后,程序可正常运行,系统时钟计数值也在一直增加,说明在未超过时间内喂狗即可保证程序正常运行,看门狗不会导致复位
在这里插入图片描述

GD32F4xx系列的窗口看门狗配置:
GD32F4xx系列串口看门狗时钟由APB1分频而来,适用于精确计时。
在这里插入图片描述
不同预分频下的看门狗最大最小超时时间以及看门狗计算公式:
在这里插入图片描述
1,添加窗口看门狗外设驱动库函数文件到工程中。
在这里插入图片描述
2,配置窗口看门狗:

//初始化
rcu_periph_clock_enable(RCU_WWDGT);
      wwdgt_config(0x7f, 0x7f, WWDGT_CFG_PSC_DIV8);//配置最大41ms超时
wwdgt_enable();
//喂狗:
wwdgt_counter_update(0x7f);

3,测试验证
窗口看门狗开启之后,必须在指定的窗口计数范围内喂狗才有效,否则喂狗无效会导致程序复位,这边设置的是越41ms超时,可以看到每30ms 喂狗一次,程序可以正常运行,系统时钟一直增加没有复位。
在这里插入图片描述
设置约50ms喂狗1次,可以看到系统时钟每增加几十个数便会复位为0,说明看门狗喂狗超时,导致复位,看门狗复位成功。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴同学啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值