失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > MSP430F435 c语言IAR编译软件报错解决方法笔记

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

时间:2022-11-09 04:29:34

相关推荐

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

IAR编译软件报错解决方法

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

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

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

int __low_level_init( void ){// Stop watchdog timer to prevent time out resetWDTCTL = 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};

如果觉得《MSP430F435 c语言IAR编译软件报错解决方法笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。