[AVR单片机] ICC编译器怎么不能定义大于30K的数组呢

[复制链接]
3432|4
 楼主| shine_qjm 发表于 2009-4-15 16:10 | 显示全部楼层 |阅读模式
使用一个M162外扩了两片32K的RAM,编译器为ICC AVR,我想定义一个60K的数组unsigned chardata[60000];但是编译器时出错,说我定义的是一个违法不当的数组,错误提示如下:
     iccavr -c -IC:\icc\include\ -e -DATMEGA -DATMega162  -l -g -Mavr_enhanced  E:\work\ov529+M162\CompatibleOv528\M162.C
!E E:\work\ov529+M162\CompatibleOv528/uart0.h(38): `-5536' is an illegal array size
C:\icc\bin\imakew.exe: Error code 1
C:\icc\bin\imakew.exe: 'M162.o' removed.
Done: there are error(s). Exit code: 1

但是我分别定义两个30K的数组却能够编译通过,unsigned char data0[30000],data1[30000];另外编译软件属性中已经设置为External 64K SRAM w/wait state.请大伙指点下。
su_mj000 发表于 2009-4-16 00:20 | 显示全部楼层

可使用 unsigned int data[30000]; 代替

qd_zcj 发表于 2009-4-27 12:53 | 显示全部楼层

可以

请使用以下代码:
flash unsigned char data[60000]={,,,,....}
icecoffelin 发表于 2009-4-27 23:23 | 显示全部楼层

三楼正解

maxking 发表于 2009-5-11 22:14 | 显示全部楼层

3楼的应该是CVAVR的定义

5楼的才是ICCAVR的定义。但是前面还必须加上:
#pragma data :code
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部