【GD32F470紫藤派开发板使用手册】第七讲 FWDG-看门狗实验
2024-12-13 来源:elecfans
7.1实验内容
通过本实验主要学习以下内容:
独立看门狗的原理
独立看门狗功能介绍
实现独立看门狗功能
7.2实验原理
前面讲到,看门狗的计数值在每一个计数器时钟来的时候减1,那么这个时钟是什么呢,我们来看一下GD32F470的时钟树:

从时钟树可以看到,FWDGT的时钟来源于IRC32K,这是GD32F470的内部时钟,典型的频率值是32KHz。但要注意,这个IRC32K不是直接连到FWDGT计数器的,而是需要经过一个预分频器,这个分频器大小通过FWDGT_PSC进行设定。
预分频寄存器(FWDGT_PSC):



如设定PS[2:0]为001b,那么计数器的时钟频率就为32K/8 = 4KHz,即每隔250us计数值减1。
7.2.1独立看门狗(FWDGT)的重装载
说完时钟,我们来说下FWDGT的计数器和重装载。计数器就是按照前面说的,每来一个计数器时钟,计数器减1,而计数器的初始值,来自于重装载寄存器。
重装载寄存器(FWDGT_RLD):


从“描述”中我们可以看出,向FWDGT_CTL写入0xAAAA(即喂狗,详见用户手册FWDGT_CTL寄存器),重装载寄存器中的数值就会自动加载到FWDGT的计数器中。
重装载寄存器(FWDGT_RLD)是一个12位的计数器,这就意味着重装载最大值为65535,再结合上一节的时钟分频,FWDGT设定的最大/最小超时周期见下表:

7.2.2独立看门狗的使用注意事项
独立看门狗的时钟源来自于IRC32K,这个内部时钟实际上不是非常的准确,所以在设定看门狗重载值和分配器时需要留有一定的余量,防止应用程序由于IRC32K频率偏差而来不及喂狗,导致不必要的MCU复位。
7.3硬件设计
本实验我们通过紫藤派开发板LED0的状态来指示MCU复位情况,用LED1来指示喂狗的情况。
7.4代码解析
在driver_wdgt.c中定义了独立看门狗的配置函数drive_fwdgt_config和喂狗函数Feed_fwdgt:
C
void drive_fwdgt_config(uint16_t reload_value, uint8_t prescaler_div)
{
/* 开启内部32K时钟 */
rcu_osci_on(RCU_IRC32K);
/* 等待时钟ready */
while(SUCCESS != rcu_osci_stab_wait(RCU_IRC32K)){
}
/*配置看门狗参数*/
fwdgt_config(reload_value,prescaler_div);
/*开启看门狗*/
fwdgt_enable();
}
void Feed_fwdgt(void)
{
/* 重装载计数器 */
fwdgt_counter_reload();
}
以下为main函数代码:
C
int main(void)
{
uint8_t i;
driver_init();//delay函数初始化
bsp_led_group_init();//LED初始化
bsp_led_on(&LED1);//点亮LED0
delay_ms(2000); //延时2s
bsp_led_off(&LED1);//熄灭LED0
drive_fwdgt_config(625,FWDGT_PSC_DIV64);//独立看门狗配置
/*闪烁LED1 5次,并每闪烁一次进行喂狗*/
for(i = 0;i<5;i++)
{
delay_ms(500);
bsp_led_toggle(&LED2);
Feed_fwdgt();
printf_log('Feed_fwdgt!/r/n')
}
while (1)
{
}
}
本例程main函数首先进行了延时函数初始化,再初始化LED0和LED1,并将LED0点亮2s钟后熄灭,然后配置独立看门狗时钟预分频为64分频,重载值为1000,即超时时间为625/(32K/64)= 1.25s,再每500ms翻转一次LED1,同时进行喂狗,最后进入while(1)循环。
7.5实验结果
紫藤派开发板上电后,LED0灯亮,2s钟后熄灭,随后LED1闪烁5次,再经过一段时间后LED1灯灭,LED0复亮,周而复始。
- 【GD32F470紫藤派开发板使用手册】第六讲 TIMER_3路PWM输出实验
- 【GD32F470紫藤派开发板使用手册】第一讲 GPIO-流水灯实验
- 【GD32F470紫藤派开发板使用手册】第四讲 FMC-片内Flash擦写读实验
- 【GD32F470紫藤派开发板使用手册】第十讲 USART-中断串口收发实验
- 【GD32F470紫藤派开发板使用手册】第三讲 EXTI-按键中断检测实验
- 【GD32F470紫藤派开发板使用手册】第二讲 GPIO-按键查询实验
- 【GD32F470紫藤派开发板使用手册】第五讲 PMU-低功耗实验
- GD32F470的RTC时间设置和获取,以及其中BCD码的坑
- 采用GD32F470高性能MCU的PowerWriter X1多功能调试烧录器
- 【GD32F470紫藤派开发板使用手册】第八讲 ADC-规则组多通道采样实验
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




