打印
[AVR单片机]

ICC编译器怎么不能定义大于30K的数组呢

[复制链接]
2707|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 | 只看该作者

三楼正解

使用特权

评论回复
5
maxking| | 2009-5-11 22:14 | 只看该作者

3楼的应该是CVAVR的定义

5楼的才是ICCAVR的定义。但是前面还必须加上:
#pragma data :code

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝