IAR下的问题种种
时间:2010-07-21 来源:ht2411
这几天用IAR写c程序在CC2430上跑,晕死,很多限制,列举几个。看有没有人碰到了解决了的,告诉偶一下啊,不胜感激。
本文出处: http://ht2411.cublog.cn
(1)在子函数中用switch语句不管用。比如我写了这么一个子函数,将if-else换成switch就不能在cc2430上运行了。如果用if-else就可以。真郁闷,没有天理啊。。。。。
void sendData(int type, double data)
{
int len;
memset(Txdata,'\0',DATA_SIZE);
/* switch(type)
{
case 1:
Txdata[0] = '1';
break;
case 2:
Txdata[0] = '2';
break;
case 3:
Txdata[0] = '3';
break;
case 4:
Txdata[0] = '4';
break;
default:
Txdata[0] = '9';
}*/
if(type==1)
Txdata[0] = '1';
else if(type==2)
Txdata[0] = '2';
else if(type==3)
Txdata[0] = '3';
else if(type==4)
Txdata[0] = '4';
else Txdata[0] = '5';
len = ftos(Txdata+1,data);
UartTX_Send_String(Txdata,len+1);
}
(2)我在main函数中声明double类型的数据,只能出现4个数字才能显示出来。也就是你可以声明:
double a=1.234, 12.34, 123.4 等等,但是如果你声明1.2345就不行了。晕死。
(3)如果你声明的变量太多了肯定会造成堆栈溢出的,这个时候可以调整IAR的配置。彪悍的配置如:
General Option->Target->Code model选择banked,
General Option->Code bank->Register:0xC7,Bank:0x2900,Bank end:0xffff.
General Option->Stack/Heap->Stack size->IDATA:0xC0,PDATA:0x80,XDATA:0x300, Heap sizes->XDATA:0x00,Far:0x000, Huge:0x000
本文出处: http://ht2411.cublog.cn
(1)在子函数中用switch语句不管用。比如我写了这么一个子函数,将if-else换成switch就不能在cc2430上运行了。如果用if-else就可以。真郁闷,没有天理啊。。。。。
void sendData(int type, double data)
{
int len;
memset(Txdata,'\0',DATA_SIZE);
/* switch(type)
{
case 1:
Txdata[0] = '1';
break;
case 2:
Txdata[0] = '2';
break;
case 3:
Txdata[0] = '3';
break;
case 4:
Txdata[0] = '4';
break;
default:
Txdata[0] = '9';
}*/
if(type==1)
Txdata[0] = '1';
else if(type==2)
Txdata[0] = '2';
else if(type==3)
Txdata[0] = '3';
else if(type==4)
Txdata[0] = '4';
else Txdata[0] = '5';
len = ftos(Txdata+1,data);
UartTX_Send_String(Txdata,len+1);
}
(2)我在main函数中声明double类型的数据,只能出现4个数字才能显示出来。也就是你可以声明:
double a=1.234, 12.34, 123.4 等等,但是如果你声明1.2345就不行了。晕死。
(3)如果你声明的变量太多了肯定会造成堆栈溢出的,这个时候可以调整IAR的配置。彪悍的配置如:
General Option->Target->Code model选择banked,
General Option->Code bank->Register:0xC7,Bank:0x2900,Bank end:0xffff.
General Option->Stack/Heap->Stack size->IDATA:0xC0,PDATA:0x80,XDATA:0x300, Heap sizes->XDATA:0x00,Far:0x000, Huge:0x000
相关阅读 更多 +