ST意法半导体
直播中

杨万富

7年用户 1460经验值
擅长:526774
私信 关注
[问答]

使用HAL_IWDG库让IWDG工作,为什么无法在IWDG_Reset之前刷新看门狗?

我正在尝试使用 HAL_IWDG 库使 IWDG 工作,但我无法在 IWDG_Reset 之前刷新看门狗。

如第 6 页所述:( https://www.st.com/content/ccc/r ... 8/70/40/57/STM32WB- WDG_tiMERS-Independent-Watchdog-IWDG/files/STM32WB-WDG_TIMERS-Independent-Watchdog-IWDG.pdf/_jcr_content/translations/en.STM32WB-WDG_TIMERS-Independent-Watchdog-IWDG.pdf
当 RL < WINR 时,我必须刷新看门狗

看门狗超时设置为 10 秒。wdgReset() 是从主循环调用的,我知道它不会消耗 10 秒。
因此,MCU 每 10 秒重置一次
  • IWDG_HandleTypeDef t_wdg;
  • void wdgInit(void){
  •    t_wdg.Instance = IWDG;
  •    t_wdg.Init.Prescaler = IWDG_PRESCALER_256;
  •    t_wdg.Init.Reload = 1250;
  •    t_wdg.Init.Window = 1250;
  •    HAL_IWDG_Init(&t_wdg);
  • }
  • void wdgReset(void){
  •         if(t_wdg.Instance->RLR < t_wdg.Init.Window){
  •                 HAL_IWDG_Refresh(&t_wdg);
  •         }
  • }
我缺少什么?









回帖(1)

潘斯凯

2023-2-8 13:55:36
> t_wdg.Init.Reload = 1250;
好吧,RLR = 1250。
> t_wdg.Init.Window = 1250;      
好的,Window 也是 1250。
> 如果(t_wdg.Instance->RLR < t_wdg.Init.Window){
这将如何执行?您并没有真正使用窗口功能。只需摆脱它,然后无条件地检查并调用 HAL_IWDG_Refresh。
举报

更多回帖

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