这是说明你的代码量超出了你预设的rom大小,一般iar编译程序后会根据一个
xxxxcl文件把你的代码和数据链接到指定地址,iar的文件夹里面搜搜就能搜到,"-z(code)code=romstart-romend"是说你所有的代码都放置在以romstart为起始地址,romend为终止地址的一段连续的空间内,romstart为0x4000016c,romend为40003fff,貌似是个有16k
flash的arm。上面报错是因为你编译出来的code
size
是0x58b4,已经超过了这个空间,你能做的就是看看能不能缩减代码量。
RAM区溢出,
以下1,2只能减少量的数据
1 优化代码 ,将可以的变量申请const存入ROM
2 重设堆栈,options-》General options -》stack/Heap重设数据,设置时小心程序运行时堆栈溢出
3 升级CPU
原因找到了。不是定时器设置的问题。而是程序中有这两条蓝色标记的语句: PC_DDR |= 0XE0;//将PC7,,6,5 设为输出 //pc2,pc1看起来设置为了输入,但其实该芯片没有这两个引脚 PC_CR1 |= 0XE0;// 推挽输出 PC_CR2 &= ~0XE0;// MAX SPEED 2MHZ //PC_CR2 |=~0XE0;// 错误的语句,看作是误 *** 作了PC2,PC1引脚,使中断不能进入。暂时看起来,这个程序不进入中断,可能是因为将PC_DDR的bit2,bit1位设置为0(复位值也是0),并且又将PC_CR2的bit2,bit1位设置为1(复位值是0),可是STM8S103F3P6又没有对应的PC2,PC1引脚,于是程序出错,从而不能进入定时中断,也不执行其它语句。不过如果不用中断,其它语句是可以正常执行的,定时器的溢出标志也可以软件查询到。
重启电脑,再下载;重新安装驱动程序,再下载;复位板子,再下载;或者软件重新启动,再下载;或者看看程序的开头,初始化是不是有问题;还有可能你的系统是win7(win7不兼容很多很多EDA软件),我明白你的心情,以前我再win7上用IAR给EasyARM1138 下程序的时候,老是d出个错误,说下载线连接不上,真是很恶心,很痛苦。明明就是按照步骤,一步一步做的就是不能通过。哈哈,问一下你的电脑是什么系统?你用的是哪款单片机?欢迎提问,
你的IAR没有破解,已经到期了。
两种方法:
1你可以上网上下个破解版里面带破解工具
2到官网下载,在点下载的时候会让你填写一些个人信息,然后他会给你发一个确认邮件,你点击确认邮件会d出一个网页,里面包含IAR的下载地址和密钥,使用期限一般是30年够用了
以上就是关于IAR编译错误,请高手给看看是怎么回事全部的内容,包括:IAR编译错误,请高手给看看是怎么回事、Msp430单片机C语言编译问题。Error[e16]:Segment CSTACK、IAR stm8利用计数器查看语句运行时间,是不是单步运行时每条语句执行时间是不对的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)