Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186644
  • 博文数量: 50
  • 博客积分: 2567
  • 博客等级: 少校
  • 技术积分: 495
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-14 10:44
文章分类

全部博文(50)

文章存档

2011年(3)

2010年(29)

2009年(11)

2008年(7)

我的朋友

分类: C/C++

2010-07-21 22:34:49

这几天用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

阅读(4750) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~