找回密码
 立即注册
查看: 794|回复: 10

将数组定义到XRAM中

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-26 16:31:56
已绑定手机

24

主题

183

回帖

941

积分

高级会员

积分
941
发表于 2024-7-3 20:55:27 | 显示全部楼层 |阅读模式
大佬们,问下,在使用STC8A8K64D4定义数组时,由于数组中的数太多了,所以我就使用XDATA
//定义扩展RAM大小
#define RAM_SIZE                8192                                                         
//测试数组         使用xdata定义后该变量的数据将存储在外部扩展ram中
unsigned char xdata Test_Array1[RAM_SIZE];                 //数组的总大小不超过8192

已经定义了,但是在向数组理存数据的时候。如下
Test_Array1[2]={1,2};
运行后出现这个错误:BUS.C(15): error C231: 'Test_Array1': redefinition
我已经定义了Test_Array1这个数组,为什么不能像普通数组一样,往数组内自由存储数据呢?

麻烦指点下,谢谢了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:421
  • 最近打卡:2025-07-01 00:51:22

8

主题

361

回帖

2542

积分

金牌会员

积分
2542
发表于 2024-7-3 21:42:51 | 显示全部楼层
报错不是内存不给用,是你重复定义了同样名字的数组,
Test_Array1[2]={1,2};这句你本意是数组赋值的吧?
但数组只有在声明时候才能这样赋值.
声明过后想要再赋值就不能用这种方法了
需要逐个数组成员单独赋值.比如:
Test_Array1[0]=1,Test_Array1[1]=2;

当数组成员数量较多,每个成员有规律时候,一般常用一个循环来逐个给数组成员赋值,
回复 支持 2 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:429
  • 最近打卡:2025-07-01 01:32:50

0

主题

336

回帖

1664

积分

金牌会员

积分
1664
发表于 2024-7-3 22:19:56 | 显示全部楼层
你这语法有问题吧,Test_Array1[2]={1,2}这句说初始化不像初始化,赋值不像赋值。unsigned char xdata Test_Array1[RAM_SIZE] 这句就是定义数组并初始化了,后面不允许再次初始化。如果是赋值就应该写成Test_Array1[2]=1的样子
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:219
  • 最近打卡:2025-06-27 10:56:19
已绑定手机

36

主题

563

回帖

1980

积分

荣誉版主

积分
1980
发表于 2024-7-3 22:51:06 | 显示全部楼层
//定义扩展RAM大小
#define RAM_SIZE                8192                                                         
//测试数组         使用xdata定义后该变量的数据将存储在外部扩展ram中
unsigned char xdata Test_Array1[RAM_SIZE];                 //数组的总大小不超过8192


这一步是定义了数组了,所以unsigned char xdata Test_Array1[8192],默认省去了{}。

但是:Test_Array1[2]={1,2},等于又定义了一次。。。


应该是
Test_Array1[0]=x
Test_Array1[1]=y

Test_Array1[2]=z

......
这样才能完成赋值。
当赋值是规律增加或减少的,可以用for循环来完成增减。可以++、--,也可以+=或者-=
单独操作某一个,那就Test_Array1[a]=b。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-26 16:31:56
已绑定手机

24

主题

183

回帖

941

积分

高级会员

积分
941
发表于 2024-7-4 18:01:52 | 显示全部楼层
网*** 发表于 2024-7-3 21:42
报错不是内存不给用,是你重复定义了同样名字的数组,
Test_Array1[2]={1,2};这句你本意是数组赋值的吧?
但数 ...

{:5_332:}好的,谢谢了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-26 16:31:56
已绑定手机

24

主题

183

回帖

941

积分

高级会员

积分
941
发表于 2024-7-4 18:03:09 | 显示全部楼层
xxxe*** 发表于 2024-7-3 22:19
你这语法有问题吧,Test_Array1[2]={1,2}这句说初始化不像初始化,赋值不像赋值。unsigned char xdata Test ...

{:5_332:}好的
谢谢了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-26 16:31:56
已绑定手机

24

主题

183

回帖

941

积分

高级会员

积分
941
发表于 2024-7-4 18:03:56 | 显示全部楼层
Yim_*** 发表于 2024-7-3 22:51
//定义扩展RAM大小
#define RAM_SIZE                8192                                               ...

{:5_332:}
好的,谢谢了哈
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:579
  • 最近打卡:2025-07-01 07:56:05
已绑定手机

50

主题

1827

回帖

3212

积分

论坛元老

积分
3212
发表于 2024-7-4 19:54:52 | 显示全部楼层
把定义和赋值搞混了吧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:482
  • 最近打卡:2025-07-01 00:52:47
已绑定手机

19

主题

3233

回帖

5355

积分

论坛元老

积分
5355
发表于 2024-7-4 20:38:41 来自手机 | 显示全部楼层
学习了,看来数组使用还是要认真。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:98
  • 最近打卡:2025-06-26 16:31:56
已绑定手机

24

主题

183

回帖

941

积分

高级会员

积分
941
发表于 2024-7-8 19:04:25 | 显示全部楼层
so*** 发表于 2024-7-4 20:38
学习了,看来数组使用还是要认真。

对的
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-1 09:36 , Processed in 0.144361 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表