查看: 6072|回复: 5

【看门狗IWDT】求助:IWDT在sleep下怎么不计数啊!

[复制链接]

4

主题

6

帖子

83

积分

中级工程师

Rank: 2

积分
83
发表于 2021-7-15 17:55:32 | 显示全部楼层 |阅读模式
MCU:FM33LC026N
1、配置IWDT周期为2秒。RTC 250ms定时唤醒,没什么事情就sleep了。为了验证IWDT功能,运行过程将喂狗注释掉了。2、确认了可选字节中的IWDTSLP是0xF,不是0xA,通过调试看了,通过运行时串口输出也看了。因此应该是”任何模式下禁止应用停止 IWDT“
3、把sleep注释掉,IWDT是起作用的,到时间MCU确实复位了。
4、但把sleep一打开,IWDT就不计数了,通过串口输出,IWDT的COUNT值为0。
5、在sleep前添加延迟500ms,通过串口输出IWDT的COUNT值有变化了,并且会复位。延迟设成50ms,COUNT值一直保持0。

大神帮忙分析一下会是什么问题?还有什么会影响IWDT的工作吗?
回复

使用道具 举报

4

主题

6

帖子

83

积分

中级工程师

Rank: 2

积分
83
 楼主| 发表于 2021-7-15 19:03:36 | 显示全部楼层
补充,在sleep前后加了如下输出:
DelayMs(50);
Logs(0, "The 1th 50ms:%d\n", IWDT->CNT);
DelayMs(50);
Logs(0, "The 2th 50ms:%d\n", IWDT->CNT);
DelayMs(50);
Logs(0, "The 3th 50ms:%d\n", IWDT->CNT);
DelayMs(50);
Logs(0, "The 4th 50ms:%d\n", IWDT->CNT);
Sleep();
Logs(0, "Sleep:%d\n", IWDT->CNT);
结果为:
The 1th 50ms:17
The 2th 50ms:30
The 3th 50ms:43
The 4th 50ms:56
Sleep:0
The 1th 50ms:17
The 2th 50ms:30
The 3th 50ms:43
The 4th 50ms:56
Sleep:0
也就是唤醒后IWDT的计数自动变为0了!
回复

使用道具 举报

4

主题

6

帖子

83

积分

中级工程师

Rank: 2

积分
83
 楼主| 发表于 2021-7-15 19:21:41 | 显示全部楼层
难道有唤醒自动喂狗功能,唤醒后,自动将狗的计数清零了?
回复

使用道具 举报

35

主题

109

帖子

1518

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1518
发表于 2021-7-16 19:45:32 | 显示全部楼层
唤醒时硬件会自动清0看门狗的计数器
回复

使用道具 举报

1

主题

3

帖子

21

积分

初级工程师

Rank: 1

积分
21
发表于 2022-5-7 10:26:19 | 显示全部楼层
你好,我想问下,可选字节中的IWDTSLP是如何修改的?
回复

使用道具 举报

1

主题

3

帖子

21

积分

初级工程师

Rank: 1

积分
21
发表于 2022-5-7 10:27:33 | 显示全部楼层
复旦微刘浏 发表于 2021-7-16 19:45
唤醒时硬件会自动清0看门狗的计数器

你好,唤醒时硬件自动清0 看门狗的功能可以通过配置取消吗?
回复

使用道具 举报

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

本版积分规则

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