硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1121|回复: 6
收起左侧

在 SYSTICK 基础上加上 独立看门狗,导致程序一直复位

[复制链接]

33

主题

155

回帖

259

积分

高级会员

积分
259
发表于 2022-7-7 16:22:29 | 显示全部楼层 |阅读模式
使用的芯片是:STM32F103VET6
问题现象:单独使用 SYSTICK 定时器,可以实现 led 灯的亮灭
如果加上 独立看门狗 ,程序执行就在 HAL_Delay()函数这卡住了,导致喂狗的程序无法执行,程序一直复位
为什么会这样啊?
image.png

image.png




iwdg.zip

1.42 MB, 下载次数: 1

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117571
QQ
发表于 2022-7-7 17:13:31 | 显示全部楼层
喂狗时间是不是不对,设置为延迟10ms都正常不。
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2022-7-7 17:29:57 | 显示全部楼层
要在HAL_Delay()中喂狗
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-7-7 17:34:46 | 显示全部楼层
eric2013 发表于 2022-7-7 17:13
喂狗时间是不是不对,设置为延迟10ms都正常不。

延时10ms是正常的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117571
QQ
发表于 2022-7-7 17:45:26 | 显示全部楼层
Biby 发表于 2022-7-7 17:34
延时10ms是正常的

说明喂狗时间计算或者配置确实不对,重新整下。
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-7-7 17:48:53 | 显示全部楼层
killalljp 发表于 2022-7-7 17:29
要在HAL_Delay()中喂狗

__weak void HAL_Delay(uint32_t Delay)
{
  uint32_t tickstart = HAL_GetTick();
  uint32_t wait = Delay;

  /* Add a freq to guarantee minimum wait */
  if (wait < HAL_MAX_DELAY)
  {
    wait += (uint32_t)(uwTickFreq);
  }

  while ((HAL_GetTick() - tickstart) < wait)
  {

  }
  

}

是这样吗?
回复

使用道具 举报

33

主题

155

回帖

259

积分

高级会员

积分
259
 楼主| 发表于 2022-7-7 17:50:03 | 显示全部楼层
eric2013 发表于 2022-7-7 17:45
说明喂狗时间计算或者配置确实不对,重新整下。

好的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-15 22:19 , Processed in 0.043041 second(s), 27 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表