小海师 发表于 2025-1-4 14:02

GD32H7 FWDG独立看门狗

这个demo给得比较复杂,我直接找了几个函数替代了它原来的长篇大论。
一个初始化,一个喂狗。一些函数里的值可以直接复制demo。这样的话,两秒后不喂狗会复位。

void FWDGT_Init(void)
{
        rcu_periph_clock_enable(KEY_CLK);
    rcu_periph_clock_enable(RCU_SYSCFG);
    fwdgt_config(2 * 500, FWDGT_PSC_DIV64);       
        fwdgt_write_disable();
        fwdgt_enable();
}


void task_fwdgt_reload(void)
{
        /* uncock fwdgt write protect*/
        fwdgt_write_enable();
        /* feed fwdgt */
        fwdgt_counter_reload();       
}


函数调用

int main(void)
{
    //其它的初始化函数。
        FWDGT_Init();
    while(1) {
                TaskLoop();
                task_fwdgt_reload();
    }
}
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_38038158/article/details/144911518

tpgf 发表于 2025-3-4 11:30

GD32H7的FWDG独立看门狗为系统提供了可靠的异常监测与恢复机制

heimaojingzhang 发表于 2025-3-5 22:11

FWDG本质上是一个12位的递减计数器。当计数器的值从某个设定的起始值一直减到0时,系统就会产生一个复位信号

keaibukelian 发表于 2025-3-6 19:07

它由内部专门的40KHz低速时钟驱动,这个时钟是独立的,即使主时钟发生故障,FWDG也能正常工作

paotangsan 发表于 2025-3-6 20:22

通过向键值寄存器写入特定的值来控制FWDG的工作状态,如写入0xCCCC可启动独立看门狗,此时计数器开始从其复位值0xFFF递减计数;写入0xAAAA可实现“喂狗”操作,即重装载计数器的值,避免产生看门狗复位

renzheshengui 发表于 2025-3-6 22:08

通过合理设置重装载寄存器的值,可以调整看门狗的超时时间

shenbuzhi 发表于 2025-3-7 10:49

内部看门狗和外部看门狗哪个更可靠些?假设mcu进入异常状态,卡死了,看门狗还能正常工作么?

wowu 发表于 2025-3-7 17:58

预分频寄存器用于设置看门狗时钟的分频系数,不同的分频系数会影响计数器的计数速度和超时时

ingramward 发表于 2025-3-10 15:00

FWDG的时钟源是内部32KHz的IRC32K时钟。

sheflynn 发表于 2025-3-10 17:08

FWDG的时钟源需要经过一个预分频器,分频因子可以通过相关寄存器进行设置。预分频后的时钟频率决定了看门狗的计数速度。

mollylawrence 发表于 2025-3-11 12:52

由于内部RC振荡器时钟的频率可能会因温度和工作条件而漂移,因此在实际应用中需要考虑这种频率变化对看门狗超时时间的影响。

mmbs 发表于 2025-3-11 16:41

一旦设置了预分频系数和重装载值,并且启用了看门狗,就不能再改变这些参数。因此,在调用启动命令前要确保所有必要的配置已经完成。

sdlls 发表于 2025-3-11 21:46

通过预分频寄存器(FWDG_PSC)设置计数器的时钟分频系数,从而调整计数器的计数频率。

pl202 发表于 2025-3-12 18:14

这个时钟源独立于系统时钟,保证了看门狗在系统时钟异常时仍能正常工作。

youtome 发表于 2025-3-14 11:25

FWDG独立看门狗包含一个计数器,该计数器在每个时钟周期递减。计数器的初始值可以通过重装载寄存器(Reload Register)来设置。

youtome 发表于 2025-3-14 14:02

在应用程序中定期执行“喂狗”操作,即向IWDG的键寄存器写入0xAAAA,以防止系统被复位。喂狗的时间间隔必须短于设定的超时时间。

elsaflower 发表于 2025-3-14 20:57

可以通过配置预分频系数和重装载计数值来调整看门狗的超时时间。

maudlu 发表于 2025-3-15 00:03

在程序的关键路径上确保及时喂狗是非常重要的,以避免不必要的系统复位。

mollylawrence 发表于 2025-3-15 03:07

FWDG独立看门狗是GD32H7系列微控制器的一个重要特性,它为系统提供了一种安全机制,以确保在软件出现异常时能够自动恢复。

geraldbetty 发表于 2025-3-15 07:48

FWDG有一个12位的计数器,计数器的初始值来自重装载寄存器(FWDGT_RLD)。
计数器在每个计数器时钟到来时减1,当计数器减到0时,会触发系统复位。
通过向FWDGT_CTL寄存器写入0xAAAA,可以重装载计数器的值,即“喂狗”。
页: [1] 2 3
查看完整版本: GD32H7 FWDG独立看门狗