MSP430RAM内数组分配问题,实验结果

来源:互联网 发布:我的世界双持js 编辑:程序博客网 时间:2024/05/20 14:41
 起因:考虑将部分参数存入FLASH,信息段是256字节。当时多考虑了一步,万一RAM不够怎么修改FLASH内数据啊。随做如下实验,结果表明,全局变量和局部变量总和超过RAM空间时,仿真状态是相互覆盖,没有实际烧写运行。

 

环境:iar 5.3

器件:MSP430F4152

 

 

代码如下:

 

unsigned char DT[431];    //这个431是随便定义的,超过435IAR就报错了

int main( void )
{
  unsigned char DT1[300];
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;

  FCTL2 = FWKEY + FSSEL0 + FN1;             // MCLK/3 for Flash Timing Generator
  //value = 0;                                // initialize value
for(int i=0;i<431;i++)
{
  DT[i]=0x55;
}
for(int i=0;i<200;i++)
{
  DT1[i]=0xaa;
}
unsigned char aa=DT[400];
DT[400]=0X33;
}

运行:1,将DT全部赋值 0x55,正常。RAM内地址0x200 -0x3AE 均为 0x55

2,将局部变量DT1赋值0xAA,运行正常。RAM内地址0x2D2 -0x399 均为 0xAA

此时DT1覆盖掉了,DT中的数据。且对两个变量操作都能修改RAM中的数值。

 

::不知烧到片子里是复位还是和这个现象一样,不过不论怎么样都是不正常的。

------------记下这一现象,留以后备查,2011年12月2日