yjm0105 阅读(661) 评论(0)

昨天发现在一个函数里插入一段if..else if..else if...的代码后居然就不能正常运行了,后来将可能冲突的变量名全换了,插入的代码也写了一个函数代替,但问题依旧(实验很多次,仿真的时候一直都正常):
系统 : Vxworks
编译器 : Tornado2.0
语言 : C
编译含有下面2个函数的工程,无错,但将程序烧录进去后就不能正常运行了,LCD点亮后无任何反应:
char reg_select(int val)
{
 if(val<950)
  return 1; 
/* ... */
}
void  set_freq(unsigned int val)
{
 ...
 /*
 if(reg_select(val))
  return;
 */
 ...
}
发现将reg_select函数整个注释掉或者把reg_select()里的if语句换成if(1)就能正常运行.
因为reg_select()并没有被调用过(有一处,但注释了),即使是set_freq()也并未在启动时调用,调用是放在某次按键处理里的.
在主函数里加上串口打印,然后发现根本没有串口信息输出,就是说主函数都没能运行起来。。
其实,从前面就应该可以知道应该是编译出错了(偶早就怀疑是编译器的问题了,只是用的是啥版,也就不好说啥了@@).
...
弄了一天也没整对,最后没法子,干脆把代码放到Tornado2.2上面去编译------->居然就运行正常了!!!

发表评论
切换编辑模式