在线情况
楼主
  • 头像
  • 级别
    • 积分3
    • 经验2068
    • 文章10
    • 注册2008-05-20
    请教MSP430堆栈溢出的问题
       我用的MSP430F1611,程序里面做了一个1024点的FFT运算,其中在一个函数里面声明了一个
    float FFT_data[1024]数组。情况是这样:在用仿真器仿真时,在调用该函数后,堆栈溢出(这是必然的),但是程序并没有跑飞或者出现什么异常现象,能够正确计算出信号频率,我想请教各位大侠,这是为什么?一般堆栈溢出会有什么后果?谢谢大家哇 我担心有隐患。。。
    微控网感谢您的参与
    在线情况
    2
    • 头像
    • 级别
    • 门派
    • 职务总版主
    • 声望+9
    • 财富5
    • 积分3065
    • 经验390701
    • 文章6744
    • 注册2006-03-07
    可以尝试将IAR EW430工程选项中将默认栈值调到大点试试看看。
    1611有10K RAM估计够你这个运算使用的。
    [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
    在线情况
    3
    • 头像
    • 级别
      • 积分3
      • 经验2068
      • 文章10
      • 注册2008-05-20
      多谢版主。。昨天仿真实验MSP430F1161的堆栈溢出问题,系统复位时SP指向0x38FE(RAM空间最后一个地址,应该是栈顶),而全局变量的被编译器初始化在从RAM区的开始地址(0x1100),他们俩共同占用10K的RAM区,全局变量越大(比如大数组),他的初始化边界就会往堆栈的区域延伸,同样,函数里面的局部变量越大(同样假设也是大数组),他也会往RAM分配给全局变量的区域延伸,所以当满足一定条件时(堆栈溢出),就会有相互覆盖的危险(看谁先赋值,谁就被覆盖),不知道我这样测试 是否正确?但是实验结果却是如此。。
      微控网感谢您的参与
      在线情况
      4
      • 头像
      • 级别
      • 门派
      • 职务总版主
      • 声望+9
      • 财富5
      • 积分3065
      • 经验390701
      • 文章6744
      • 注册2006-03-07
      当然你的数据不能占用RAM中的大部分吧,否则后那些嵌套或多子程序调用时这堆栈就不够用了。不知你测试弄得怎样了,有没有什么消息跟我们分享的呢。
      [COLOR=#0000ff]欢迎发贴分享设计心得、开源DIY...[/COLOR]
      Powered by LeadBBS 9.2 .
      Page created in 0.1719 seconds with 5 queries.