找回密码
 立即注册
查看: 1887|回复: 14

如何指定常数数组的地址

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2023-9-1 15:10:46 | 显示全部楼层 |阅读模式
本帖最后由 firefly2k 于 2023-9-1 15:16 编辑

我要定义一个code/const的常数数组,用于查表或者类似应用。请问如何定义?




unsigned char code text[5] _at_ 0xe000;                    //可以编译通过
unsigned char code text[5]={1,2,3,4,5} _at_ 0x2000;  //编译报错


回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-03-30 20:18:10

11

主题

45

回帖

236

积分

中级会员

积分
236
发表于 2023-9-1 15:22:21 | 显示全部楼层
问题已解决,_at_放中间
unsigned char const text[5] _at_ 0x2000={1,2,3,4,5} ;

点评

如果需要在代码区域定义常数数组需要像下面这样定义 unsigned char const text[5] _at_ 0xff2000={1,2,3,4,5} ;  详情 回复 发表于 2023-9-1 15:30
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-1 15:30:05 | 显示全部楼层
firef*** 发表于 2023-9-1 15:22
问题已解决,_at_放中间
unsigned char const text[5] _at_ 0x2000={1,2,3,4,5} ;

如果需要在代码区域定义常数数组需要像下面这样定义
unsigned char const text[5] _at_ 0xff2000={1,2,3,4,5} ;

否则即使有const关键字,也不会定义到code区
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2023-9-1 17:31:31 | 显示全部楼层
zh*** 发表于 2023-9-1 15:30
如果需要在代码区域定义常数数组需要像下面这样定义
unsigned char const text[5] _at_ 0xff2000={1,2,3,4 ...

那在定义变量的时候加上code 关键词行么  我试过只加const 是不行的

点评

几种定义方法以及Keil分配地址,你可参考一下  详情 回复 发表于 2023-9-2 14:40
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-9-2 14:40:13 | 显示全部楼层
本帖最后由 zhp 于 2023-9-2 14:44 编辑
cofmilk 发表于 2023-9-1 17:31
那在定义变量的时候加上code 关键词行么  我试过只加const 是不行的

几种定义方法以及Keil分配地址,你可参考一下
直接使用const,编译器会分配到edata区域
使用code,则只能定义在FF:0000H~FF:FFFFH区域
使用ecode,则可定义STC32G12K128的128K区域,FE:0000H~FF:FFFFH

截图202309021439086635.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2023-9-2 14:51:07 | 显示全部楼层
zh*** 发表于 2023-9-2 14:40
几种定义方法以及Keil分配地址,你可参考一下
直接使用const,编译器会分配到edata区域
使用code,则只能 ...

对对 您说的是对的 直接使用const 是不会定义在code区
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-02 01:28:16
已绑定手机

40

主题

371

回帖

843

积分

高级会员

积分
843
发表于 2023-11-10 08:52:20 | 显示全部楼层
zh*** 发表于 2023-9-2 14:40
几种定义方法以及Keil分配地址,你可参考一下
直接使用const,编译器会分配到edata区域
使用code,则只能 ...

请教一下,你是如何打开KEIL 右边那test.map

点评

项目名称上点击鼠标右键,选择右键菜单中的“Open .\xxx.map” [attachimg]26399[/attachimg] [attachimg]26400[/attachimg]  详情 回复 发表于 2023-11-10 13:00
map文件 编译后会生成在 工程目录/Listings/ 下面  详情 回复 发表于 2023-11-10 11:06
纸上得到终觉浅,绝知此事要躬行。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:217
  • 最近打卡:2024-11-15 09:12:27

29

主题

722

回帖

2790

积分

荣誉版主

积分
2790
发表于 2023-11-10 11:06:29 | 显示全部楼层
飞*** 发表于 2023-11-10 08:52
请教一下,你是如何打开KEIL 右边那test.map

map文件 编译后会生成在 工程目录/Listings/ 下面
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-11-10 13:00:52 | 显示全部楼层
飞*** 发表于 2023-11-10 08:52
请教一下,你是如何打开KEIL 右边那test.map



项目名称上点击鼠标右键,选择右键菜单中的“Open .\xxx.map”
截图202311101259153594.jpg


截图202311101259308403.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:440
  • 最近打卡:2025-05-02 01:28:16
已绑定手机

40

主题

371

回帖

843

积分

高级会员

积分
843
发表于 2023-11-11 09:13:15 | 显示全部楼层
zh*** 发表于 2023-11-10 13:00
项目名称上点击鼠标右键,选择右键菜单中的“Open .\xxx.map”

好的,谢谢
纸上得到终觉浅,绝知此事要躬行。
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:02 , Processed in 0.187629 second(s), 123 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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