51复位难道不是从程序开始处执行吗?看看这现象

2020-02-05 09:12发布

本帖最后由 zuu0 于 2012-5-31 17:31 编辑

void main()
{
  启动画面
  延时2秒
  
  其它功能初始化
  开看门狗  //1秒 小于上面的延时 stc  WOD_CONr=0X3C
  while(1)
  {
    ........
   喂狗       
  }

}


现象: 正常上电启动,程序正常,每次上电都工作正常

按下复位键:启动画面 一直在闪烁,也就是没有喂狗。

为什么???按复位键后和上电 程序难道还不是从一个地方开始执行?

在延时2秒那段程序里不断喂狗,工作正常。郁闷啊
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
MadCat
1楼-- · 2020-02-05 10:14
1、在  喂狗   那加点别的提示,比如LED点亮,串口输出。
2、判断下单片机是否真的成功复位了,复位电容会不会太大。
3、不知道你用什么屏,你屏初始化是否正确。因为你断电后是重新上电 和你在通电过程中重新初始化不是一个概念。
zuu0
2楼-- · 2020-02-05 14:25
 精彩回答 2  元偷偷看……
BXAK
3楼-- · 2020-02-05 14:28
程序问题,你按复位后,看门狗依然继续运行,造成在延时2秒那里重复复位了,
应该在程序初始化最开头处清看门狗、延时2秒里也要内嵌清看门狗,
觉得上面麻烦,那就在初始化最开头处先关看门狗(STC的看门狗可以程序关闭),超级循环前再打开
zuu0
4楼-- · 2020-02-05 16:36
本帖最后由 zuu0 于 2012-6-1 08:42 编辑

程序开始关狗,没用,。试过了

大师有空试一下,好像都是这样,我想不明白,吃不好,睡不好

同样是复位为什么会不一样,如何解释?
snoopyzz
5楼-- · 2020-02-05 16:41
使用了未赋初值的变量?
yangbo_zd
6楼-- · 2020-02-05 18:09
什么看门狗,有的看门狗上电启动后就不能关闭的,
这样当然热复位后程序启动,在2s延时的时候看门狗还是开启的,自然就不停复位了

一周热门 更多>