STM32
直播中

英雄孤寂

13年用户 1280经验值
私信 关注
[问答]

STM32F030窗口看门狗一直复位是为什么?如何处理?

时钟是48M的,WWDG初始化如下:

  hwwdg.Instance = WWDG;
  hwwdg.Init.Prescaler = WWDG_PRESCALER_8;
  hwwdg.Init.Window = 117;
  hwwdg.Init.Counter = 127;
  hwwdg.Init.EWIMode = WWDG_EWI_DISABLE;

我的理解是6.8ms~43ms间就可以喂狗,所以程序里面每隔20ms进行喂狗,但程序一直复位,不知为何?

回帖(1)

h1654155275.5741

2024-4-18 18:24:23
根据您提供的WWDG初始化代码,配置了窗口看门狗的预分频器为WWDG_PRESCALER_8,窗口值为117,计数器值为127,EWI模式为禁用。根据STM32F030参考手册的描述,窗口时间计算如下:

窗口时间 = (窗口寄存器值 + 1) / (时钟频率 / 预分频器)

根据您提供的信息,时钟频率为48M,预分频器为8,所以窗口时间约为6.8ms。您的理解是正确的,喂狗的间隔在6.8ms到43ms之间,所以每隔20ms喂狗是符合要求的。

如果程序一直复位,可能是以下几个方面的原因:

1. WWDG中断未使能:请确保已经使能了窗口看门狗的中断,在初始化代码后添加以下代码:
    ```c
    HAL_WWDG_Start_IT(&hwwdg);
    ```

2. 独立看门狗中断优先级设置不正确:请检查独立看门狗中断的优先级设置。您可以使用以下代码来设置:
    ```c
    HAL_NVIC_SetPriority(WWDG_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(WWDG_IRQn);
    ```

3. 喂狗函数未正确调用:请检查喂狗的函数是否正确调用了,可以在每次喂狗的位置添加打印信息来确认是否调用成功。

如果您检查以上问题后仍然无法解决,建议您检查硬件连接是否正确,确认窗口看门狗的IO口是否正常工作。此外,也可以查看芯片的硬件资料,查找更详细的配置和使用说明。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分