MSP430F435 c语言IAR编译软件报错解决方法笔记

IAR编译软件报错解决方法

1、问题一:堆栈溢出出现警告。已进入主函数就开始报警堆栈溢出。

 报错原因:在主函数中定义了大量的大数组,看门狗已经关闭,但仍未完成数据初始化,导致堆栈溢出。

 解决方法:定义关闭看门狗的函数,并将定义的大数组提到主函数外,使关闭看门狗的同时完成初始化数组到ARM中,就不会发生堆栈溢出。

int __low_level_init( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  return 0;
}
float o1[11],o2[17],o3[13];
int weigh1[11] = {-1698,-1675,-1718,609,-750,-738,-1967,979,-1282,-465,842};
int bias1[11] = {400,739,1117,-282,674,82,113,212,-802,-249,727};

2、问题二:Error[e16]: Segment DATA16_I (size: 0x400 align: 0x1) is too long for segment definition. At least 0x200 more bytes needed. The problem occurred while processing the segment placement  command "-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I=0200-03FF"

 

报错原因: 虽然都是msp430单片机,但是不同型号各存储单元的存储空间的大小也各有不同。由于编写的程序中初始化了多个大数组常量,定义了多个数组变量,相同的程序配置不同的单片机,msp430f435的RAM由于存储空间不足,程序编译报错。

解决方法:将大数组数据利用const定义常量存储到FLASH中。

const float o1[11],o2[17],o3[13];
const int weigh1[11] = {-1698,-1675,-1718,609,-750,-738,-1967,979,-1282,-465,842};


 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值