标题: 求助]老是跑飞为什么?[ [打印本页]
作者: cunning 时间: 2006-8-4 17:29 标题: 求助]老是跑飞为什么?[
while(1){
WaitTimeOut=0;
while((CAN4RFLG_RXF==0)&&(WaitTimeOut<WAIT_WINDOW))
WaitTimeOut++;
if(WaitTimeOut>=WAIT_WINDOW)
break ;
else
Idr=CAN4RXIDR0;// 此处跑飞
switch(Idr){
...//receive data from CAN
}
CAN4RFLG_RXF = 1;
}
}
哪位老兄能告诉我那里错了?
作者: strongchen 时间: 2006-8-4 17:32
COP WATCHDOG是否启动?
作者: cunning 时间: 2006-8-4 20:14
我没有用WATCHDOG
作者: strongchen 时间: 2006-8-7 10:02
你怎么知道程序是在这一句跑飞的?
作者: cunning 时间: 2006-8-7 10:17
用BDM设断点,然后run to cursor,就飞掉了,另外我去掉判断,设断点,run to cursor几次后也会飞掉。
while(1){
while(CAN4RFLG_RXF==0) ;// 断点设在此处,
Idr=CAN4RXIDR0
switch(Idr){
...//receive data from CAN
}
CAN4RFLG_RXF = 1;
}
}
作者: happysuxin 时间: 2006-8-7 10:41
会不会是堆栈溢出了?
作者: cunning 时间: 2006-8-7 10:58
我的堆栈改的很大也不行
作者: strongchen 时间: 2006-8-7 11:07
断点设在别的地方就没有这个问题了吗?
把程序简化试试。
作者: nishui_2000 时间: 2006-8-8 17:14
是不是仿真器有问题或者系统时钟不稳定。你打开PLL了么?关闭他试试
作者: cunning 时间: 2006-8-9 12:43
恩,好的,谢谢各位
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |