4056|7

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

4152关闭看门狗运行一段时间后为啥还会复位呢 [复制链接]

最新回复

到底是啥原因啊  详情 回复 发表于 2014-8-7 14:38
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
楼主能否将全部代码贴上来看看,采用while了吗?堆栈溢出是有可能复位的。
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

我用到了while循环,目前方便起见,我把while部分的代码贴出来了
增加有色字体部分会出现不定时复位的现象
while(1)
{

flag = 0;

if((key1click == 1)&&(IsKey1Click == false))
{
delay_NOP(1000);
if ((P1IN&BIT0) == 0)
IsKey1Click = true;

key1click = 0;
gLongKeyTimer = 0;
}

if(IsKey1Click == true)
{
if (gLongKeyTimer > 3)
{
IsKey1Click = false;
ucCurKeyValue = 0;
keyvalue=0x60;

}
else if ((P1IN&BIT0) != 0)
{
IsKey1Click = false;
keyvalue=0x51;
}
}


switch(SCREENSTATE)
{
case 0:
{
DisplayMeterAddr();
switch(keyvalue)
{
case 0x51:
SCREENSTATE=1;
break;

case 0x54:
break;

default:
break;
}
}
break;

case 1:
{
DisplayInsFlow(0);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=2;
break;
case 0x60:
gFlag_StartSetZero=true;
SCREENSTATE=250;
break;
default:
break;
}
}
break;

case 2:
{
DisplayCumFlow2();
switch(keyvalue)
{
case 0x51:
SCREENSTATE=3;
break;
default:
break;
}
}
break;

case 3:
{
DisplayTemp(0);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=4;
break;
default:
break;
}
}
break;

case 4:
{
DisplayTemp(1);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=5;
break;
default:
break;
}
}
break;

case 5:
{
DisplayTemp(2);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=6;
break;
default:
break;
}
}
break;

case 6:
{
DisplaySysTime(0);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=7;
break;
default:
break;
}
}
break;

case 7:
{
DisplaySysTime(1);
switch(keyvalue)
{
case 0x51:
SCREENSTATE=0;
break;
default:
break;
}
}
break;

case 101:
break;
case 250:
DisplayCalib();
switch(keyvalue)
{
case 0x51:
SCREENSTATE=1;
break;
default:
break;
}
break;

default:
break;
}
keyvalue=0;
CurTimer_1s = Timer_1s;
CurTimer_500ms = Timer_500ms;


if(Timer_1s%5==0)
{
testtempfunc();
}


GP2_init();
fire_flag=0;
timer500ms_flag=0;
VCC_OFF;
VCA_OFF;
VCB_OFF;
flag =MeasDeltaTime(&lTOF,IsFirstDownFlow);



#if CALCULATETIME
if (flag == RET_OK)
{
if (CaculateDeltaTime(lTOF,&SampleBufLen) != 1)
counter_overflow++;

else
{

counter_overflow = 0;
CalibAndCorrect();
#if 0
gInsFlow = (float)glCurSampleData*23120.57; gInsFlow /=ulTOF_counterflow0 ; gInsFlow *=224 ; gInsFlow /=ulTOF_downflow0 ; gInsFlow*=3600 ;


if (CurTimer_500ms != oldCacuTimer_500ms) {

if (CurTimer_500ms > oldCacuTimer_500ms)
t = 0.5 * (CurTimer_500ms - oldCacuTimer_500ms);
else
t = 0.5 * (CurTimer_500ms + 120 - oldCacuTimer_500ms);

oldCacuTimer_500ms = CurTimer_500ms;
fmid = gInsFlow*t;
fmid *=277.7778;
glCumFlow +=fmid;



}
#endif
}

gSensorFault = false;
counter_overflow = 0;

}

else if (flag != 0)
{
if (counter_overflow > 10)
{
gSensorFault = true;
if (flag == TDC_FAULT)
{
GP2_init();
delay_NOP(1000); //10ms
counter_overflow = 0;

}
}
else
counter_overflow++;
}
#endif

}
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
4152有堆栈溢出自动复位机制啊!
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
问下是否堆栈溢出 会自动复位啊
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
堆栈溢出了,那中断返回,或者调用子函数返回后的PC就可能出错,不知道飞哪里去了呢
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

7
 
仿真时查看程序运行到哪里复位。
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(初级)

8
 
到底是啥原因啊
 
个人签名高温热感染人人人共同
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表