打印
[AVR单片机]

AVR中大数组应用问题

[复制链接]
4168|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cetclyb|  楼主 | 2007-10-23 09:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用ICC编译器,在MG32中(它的数据区大小为2K),有一个长度为3000字节的静态数组,应该怎样声明引用?
我的方法是
     const char data[3000] ={1, 2, 3, .......};
并且在编译器中设置它在FLASHZ中,但是编译报错,超出BSS,请问有谁知道怎么操作?
谢谢!

相关帖子

沙发
cetclyb|  楼主 | 2007-10-24 12:55 | 只看该作者

双龙没有人看这个问题吗?

使用特权

评论回复
板凳
greenspace| | 2007-10-24 17:41 | 只看该作者

刚开始用,手册中好像有

应该声明中用__flash关键字吧?const可以不要
__flash char data[3000]=

使用特权

评论回复
地板
greenspace| | 2007-10-24 17:55 | 只看该作者

说句题外话

21ic的笔记居然不能用中文ID登录,是何道理?害我重起炉灶,还要灌水赚分

使用特权

评论回复
5
cetclyb|  楼主 | 2007-10-26 13:06 | 只看该作者

谢谢

使用特权

评论回复
6
computer00| | 2007-10-26 13:25 | 只看该作者

积分容易,去做题就行了,就在左边的列表里找找

使用特权

评论回复
7
cetclyb|  楼主 | 2007-10-26 16:47 | 只看该作者

好象用关键字flash也不行,包扩前边带下划杠

使用特权

评论回复
8
掩埋水雷| | 2007-10-28 11:29 | 只看该作者

高手来解答下啊,我学习下

高手来解答下啊,我学习下

使用特权

评论回复
9
greenspace| | 2007-10-29 14:03 | 只看该作者

我测试了一下,没问题,变量就在code区域

__flash char data[3000] ={1, 2, 3};
注意是双下划线

使用特权

评论回复
10
cetclyb|  楼主 | 2007-11-1 12:38 | 只看该作者

我测试还是不通过,报错

请问你用的什么编译器?我的是ICC

使用特权

评论回复
11
greenspace| | 2007-11-1 15:30 | 只看该作者

抱歉,我一直以为是IAR了

iccAVR应该是这样
#pragma data:code 
const table[]={1,2,3}; 
#pragma data:data 
另外,变量名最好不要用data吧,有没有问题我不知道,总归是不好

使用特权

评论回复
12
cetclyb|  楼主 | 2007-11-1 17:31 | 只看该作者

谢谢,我测试以下

使用特权

评论回复
13
左手换右手| | 2007-11-1 19:26 | 只看该作者

没有选择器件型号吧

使用特权

评论回复
14
cetclyb|  楼主 | 2007-11-2 10:48 | 只看该作者

还是有问题

#pragma data:code
const table[4000]={1,2,3};
#pragma data:data 

用MG32芯片,编译不能通过,说CODE区不够,为什么?

使用特权

评论回复
15
gwnpeter| | 2007-11-4 07:28 | 只看该作者

实验一下这个

static const char data[3000] = {1,2,3,};
在函数里面就必须这样,否则有问题!!!!!!!!!!!!!!!!!!

使用特权

评论回复
16
dadodo| | 2007-11-4 11:24 | 只看该作者

这样是可以的

在main()前可以这样用:
const char data[3000]={1,2,3};

编译结果为增加了9%的代码。

使用特权

评论回复
17
john871410| | 2007-11-5 11:25 | 只看该作者

我碰到过这个问题,我已经解决了

方法1:将一维数组定义成二维数组,如:map【3000】---》map【3】【1000】然后程序中用指针访问数组。
方法2:将iccavr生成的makefile文件中bssdata直接加大到你需要的大小就ok。

呵呵
你式把,一定ok的!

Mrtos01@163.com

使用特权

评论回复
18
一颗心的思考| | 2014-9-19 23:15 | 只看该作者
#pragma data:data
const unsigned char table[]={1,2,3};
const unsigned char a[]="ICCAVR";
#pragma data:code

使用特权

评论回复
19
一颗心的思考| | 2014-9-22 20:23 | 只看该作者
直接用flash代替const不行吗?

使用特权

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

本版积分规则

14

主题

70

帖子

0

粉丝