Board logo

标题: 求助]老是跑飞为什么?[ [打印本页]

作者: 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