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

中断喂狗失败

[复制链接]
潇潇雨歇pku 提问时间:2016-3-8 19:21 /
刚开始使用WWDG。用其他方法喂狗成功了,尝试通过中断喂狗失败:
使用TIMER2设置中断,发生中断时,设置标志。
主函数while检测到标志,清除标志,喂狗。
然后就失败了。
现在发现,开了狗,就进不去中断了,所以失败。想不通为什么狗会导致中断失败?
关了狗,中断正常。
不用中断,在while中延迟相等时间,喂狗成功。
收藏 评论11 发布时间:2016-3-8 19:21

举报

11个回答
潇潇雨歇pku 回答时间:2016-3-9 09:38:52
顶起来……         
xmshao 回答时间:2016-3-9 11:33:24
本帖最后由 xmshao 于 2016-3-9 11:37 编辑

如果你定时时间长于WWDG的窗口时间,那定时器永远等不到溢出就被复位了。

你说 “不用中断,在while中延迟相等时间,喂狗成功” 确信不是误会?这个相等时间是跟定时器的时间还是看门狗的窗口时间?
潇潇雨歇pku 回答时间:2016-3-9 11:58:51
xmshao 发表于 2016-3-9 11:33
如果你定时时间长于WWDG的窗口时间,那定时器永远等不到溢出就被复位了。

你说 “不用中断,在while中延迟 ...

喂狗的窗口时间是64.17ms~87.38ms
delay 70ms成功喂狗,定时70失败。关掉狗,发现定时确实是70ms
潇潇雨歇pku 回答时间:2016-3-9 14:12:58
xmshao 发表于 2016-3-9 11:33
如果你定时时间长于WWDG的窗口时间,那定时器永远等不到溢出就被复位了。

你说 “不用中断,在while中延迟 ...

感觉好像是stm32的问题,开启定时器会先进入一次中断,然后导致提前喂狗
潇潇雨歇pku 回答时间:2016-3-9 14:32:46

终于找到了。
STM32在开启中断前,TIMx_SR的UIF就置1了,所以一开启中断立即就会先进入一次中断,从而导致了提前喂狗。
解决办法就是在开启中断前先把UIF位置0.
回答时间:2016-3-9 15:19:05
建议不要在中断中喂狗,这样别的程序死掉的时候,喂狗还是会继续,导致程序不能复位。
xmshao 回答时间:2016-3-9 15:22:54
潇潇雨歇pku 发表于 2016-3-9 14:12
感觉好像是stm32的问题,开启定时器会先进入一次中断,然后导致提前喂狗

你提到的定时器开启就进入中断跟配置有点关系,有些情况下有这个问题。
多数时候可能对应用没啥影响可能就忽视了。

不过你这个问题,应该说参数配置有待琢磨。
http://mp.weixin.qq.com/s?__biz= ... 78657eeb2d655020#rd
STM32 定时器有时一开启就进中断的话题
潇潇雨歇pku 回答时间:2016-3-9 15:29:29
安 发表于 2016-3-9 15:19
建议不要在中断中喂狗,这样别的程序死掉的时候,喂狗还是会继续,导致程序不能复位。 ...

直接在中断中喂狗是的。但是我是在中断中设置标志,然后在主函数中判断以后再喂狗,应该没问题吧?
潇潇雨歇pku 回答时间:2016-3-9 15:30:20
xmshao 发表于 2016-3-9 15:22
你提到的定时器开启就进入中断跟配置有点关系,有些情况下有这个问题。
多数时候可能对应用没啥影响可能 ...

哈哈哈,你也是二姨和这边两边都上啊
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版