OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3666|回复: 1

数组指定内存

[复制链接]

9

主题

27

帖子

0

精华

高级会员

Rank: 4

积分
785
金钱
785
注册时间
2016-3-3
在线时间
28 小时
发表于 2017-3-10 11:36:47 | 显示全部楼层 |阅读模式

使用_at_关键字对存储器进行绝对地址定位程序如下

#include<reg51.h>

char xdata LED_Data[50] _at_ 0x8000;

main()

{

   LED_Data[0] = 0x23;

}

在keil中运行以上程序可以在存储器窗口中输入 x:0x8000 可以看到0x8000地址中的值为0x23.

值得指出的几点是

1.在给变量LED_Data[50]定位绝对地址空间时,不能对其赋初值。

2.char xdata LED_Data[50] _at_ 0x8000;这条语句不能主函数中。有些网友提到在按着keil说明中用_at_进行绝对地址定位时,编译会出现错误274,就是将这条语句放在主函数中的原因。

3.keil中地址是自动分配的,所以除非特殊情况否则不提倡使用绝对地址定位。不要把c当作汇编使用。


对于stm32,内存分配

u16 testsram[250000] __attribute__((at(0XC0000000)));//测试用数组
将数组挂载到指定内存区域

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

27

帖子

0

精华

高级会员

Rank: 4

积分
785
金钱
785
注册时间
2016-3-3
在线时间
28 小时
 楼主| 发表于 2017-3-10 19:47:58 | 显示全部楼层
STM32 大小端模式 与 堆栈及其增长方向分析 http://www.openedv.com/forum.php ... 2&fromuid=50377 (出处: OpenEdv-开源电子网)
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 13:15

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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