你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【实战经验】窗口看门狗启动时异常复位问题

[复制链接]
zero99 发布时间:2016-12-19 10:59
前言
窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时WWDG提供了一个提前唤醒中断,能够在WWDG计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。

问题描述
问题复现平台: STM3210E_EVAL板
                       IAR for ARM v7.70.1
问题复现程序: 基于STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Examples
问题描述:在应用开发过程中,WWDG开启后,WWDG的提前唤醒中断立即被触发,并且微控制器复位。

主要实现程序如下所示。
21.jpg
如流程图所示,在应用程序正常运行时,WWDG中断不会被触发。当程序跑飞等异常情况出现时,由于未能在及时刷新WWDG,导致WWDG中断事件被触发。在中断服务程序中刷新WWDG,以免微控制器复位,造成运行信息被破坏,并保存运行信息以供错误分析。
22.jpg

问题分析
利用IAR以及ST-Link V2进行在线调试,在执行完WWDG_Enable(127) 指令后,WWDG寄存器值如下所示。
23.jpg
其中提前唤醒中断标志WDGA@WWDG_SR被置位,意味着提前唤醒中断触发。在中断服务程序中,存在刷新WWDG指令。此时计数器值T=0x7F@WWDG_CR不在窗口内(W=0x50@WWDG_CFR),而WWDG在非窗口中(不允许刷新阶段)重装载计数器值会导致复位,如下图所示。


24.jpg
经过验证,针对这种情况,有两个解决方案。
解决方案一:
在使能WWDG之后清除提前唤醒中断标志位EWI@WWDG_SR,然后使能提前唤醒中断。如下所示。
25.jpg

解决方案二:
配置计数器装载值不大于窗口值。如下所示。
26.jpg
同时,需要确保唤醒中断的服务程序中存在中断标志位EWI@WWDG_SR判断语句,以避免异常。

总结
WWDG不仅提供了一种有别于独立看门狗的程序监测方法。同时提前唤醒中断的存在,也为故障信息的保存以及分析,提供了一种途径。但是,需要注意的是窗口看门狗的时钟源来源于PCLK1,在STOP、STANDBY低功耗模式下,WWDG功能被停止。







资料下载

更多实战经验

收藏 2 评论6 发布时间:2016-12-19 10:59

举报

6个回答
lzts 回答时间:2016-12-19 11:03:14
占位,学习了.
leo121_3006061 回答时间:2016-12-19 13:06:02
感谢分享
jackten 回答时间:2016-12-19 13:12:04
谢谢分享                           
西奥伟 回答时间:2019-6-26 15:04:24
学习了
西奥伟 回答时间:2019-6-26 15:05:33
配置计数器装载值W能够配置成0x7f吗??
zhy233090130 回答时间:2019-7-24 20:58:15
您好!我用的片子是STM32F030同样出现此问题,用STLINK仿真发现WWDG初始化未完成就复位了,请问有例程可以发我学习一下吗,谢谢!

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版