求助:Keil里定义在code区的数组应用出错

[复制链接]
3723|3
 楼主| gezhi 发表于 2007-8-10 21:42 | 显示全部楼层 |阅读模式

代码1:
uint code relay_dis[4]={0x00,0Xaa2a,0Xeef8,0Xf81e};
void r1(void){    
static uchar item=40; 

if(40==item){
    item=relay_config[relay_term-1];
    }
      
DISBYTE_cfg((relay_dis[item]>>8),relay_dis[item]);
}
以上部分运行正常。


代码2:
uint code relay_dis[4]={0x00,0Xaa2a,0Xeef8,0Xf81e};
void r1(void){    
static uchar item=40; 
uint temp1;

temp1=1;

if(40==item){
    item=relay_config[relay_term-1];
    }
      
DISBYTE_cfg((relay_dis[item]>>8),relay_dis[item]);
}
加上红字部分就提示递归调用错误*** WARNING L13: RECURSIVE CALL TO SEGMENT
有人提示说是访问了代码区,我定义成uint data relay_dis[4]={0x00,0Xaa2a,0Xeef8,0Xf81e};后问题确实解决了。不过为什么我的这两个应用,一个能行一个就不行了呢?望各位指教!
gjg191 发表于 2007-8-10 22:55 | 显示全部楼层

dd

跟你定义静态变量有关系
ayb_ice 发表于 2007-8-11 07:47 | 显示全部楼层

是警告,不是错误,有递归调用的危险....

 楼主| gezhi 发表于 2007-8-11 21:19 | 显示全部楼层

求助:Keil里定义在code区的数组应用出错

大家帮帮忙啊!还没解决呢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

112

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部