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

紧急求助STM8S003看门狗在主循环老是复位

[复制链接]
爱随缘 提问时间:2018-11-2 22:46 /
本帖最后由 爱随缘 于 2018-11-3 10:34 编辑

程序已经全部写好,测试没有问题,现在加入看门狗程序,16MHZ主频,4分频,255MS复位时间(独立看门狗)程序如下,我关闭定时器4后程序正常,或者我最里面的循环关闭读取AIN6的值也正常(就是第一个图片画圈的位置),其他我尝试过修改定时器4进入时间和看门狗复位时间均没有效果。大家帮我看下怎么回事,谢谢了。还有个我主程序有3个嵌套死循环,1-2循环没有任何问题,到最后这个循环出现了问题,。我去掉看门狗没有任何问题,加入后就是运行到最里面的循环出现复位。AIN6我再其他2个循环里面也有用到均没有问题,应该不是ADC程序问题。
QQ截图20181102223950.png 2.png 3.png
收藏 评论4 发布时间:2018-11-2 22:46

举报

4个回答
七哥 回答时间:2018-11-3 01:02:01
本帖最后由 toofree 于 2018-11-3 01:06 编辑

请只在一个地方执行read_adc_value()操作,不论是通道5,还是6,只是同一个ADC的不同通道。
你在 GetAdcValue()中整的死循环等标志位。
试想,正在执行通道6的adc转换,这时被中断中要执行的通道5的adc转换打断,会出来什么情况,很有可能发生时序紊乱。而时序乱了,执行时间超过看门狗复位时间,也就不足为奇了。
不妨将通道6的ADC转换也一并放到定时器4中去,如果主程序中通道6的速度不要求太快的话,可以加个累加标志变量,隔几个定时器中断周期转换一次。
wenyangzeng 回答时间:2018-11-3 07:26:36
不应该在定时器中断里读ADC,这样很容易造成定时器中断超时,当然看门狗工作也不正常了。
STM1024 回答时间:2018-11-3 09:01:51
看门狗超时了呗,你要尽可能地缩短中断执行的时间。
例如中断只是设置一个状态,在主程序中再根据状态执行相应的操作。
或者你设置一个优先级比较高的定时器中断,在其中不断地喂狗
爱随缘 回答时间:2018-11-3 10:34:22
已经解决,解决方法参考2楼,把读取AIN6的值一并放入中断里面,中断里面不建议喂狗,假设程序死了后,中断没有问题,喂狗程序一直在,单片机就不会复位了,感谢各位大神
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版