打印

uc/os ii操作系统中一个宏定义问题引起的程序死机问题

[复制链接]
1594|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
史上第一菜|  楼主 | 2009-6-22 14:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个问题的现象如下:
定义一个宏名称为MODEM_OPERATION的时候会导致程序死机,
#define MODEM_OPERATION        //modem业务  
经调试发现,程序死机调试器ADS提示的错误代码为:未经定义的指令; 当屏蔽该宏时程序运行正常。

然而使用宏MODEM_OPERATION的地方只有这里:
#ifdef  MODEM_OPERATION
SmsModeProcess();  //短信接收处理
#else
CpuRunLedCntEn = ENABLE;  //程序运行指示灯开
#endif

出现这个问题后本人做过以下几个测试:
1.把SmsModeProcess();语句屏蔽掉,即:
#ifdef  MODEM_OPERATION
//SmsModeProcess();  //短信接收处理
#else
CpuRunLedCntEn = ENABLE;  //程序运行指示灯开
#endif
程序仍然死机。
2.如果在SmsModeProcess函数下面随意加一条无用的给变量赋值的语句,例如:
#ifdef  MODEM_OPERATION
//SmsModeProcess();  //短信接收处理
CpuRunLedCntEn = ENABLE;  //程序运行指示灯开
#else
CpuRunLedCntEn = ENABLE;  //程序运行指示灯开
#endif
这时无论是否屏蔽SmsModeProcess函数,程序都是正常的。
3.把宏MODEM_OPERATION更改成全局变量使用时,程序运行正常。
4.把宏名称更换,没有效果。
5.给宏定义一个具体的值,没有效果。

非常困惑,大家有没有遇到过这种问题?

相关帖子

沙发
史上第一菜|  楼主 | 2009-6-25 10:20 | 只看该作者

没有人遇到过这样的情况吗?

使用特权

评论回复
板凳
一级菜鸟| | 2009-6-25 10:52 | 只看该作者

自己跟进去,没代码神仙也不知道什么原因

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

6

帖子

0

粉丝