打印

如何在STM32 C代码中把全局数组指定内存地址

[复制链接]
7984|5
手机看帖
扫描二维码
随时随地手机跟帖
沙发
leino11121|  楼主 | 2009-3-20 16:18 | 只看该作者

我用的编译器是keil

用指针并不能保证地址后的一段内存不被用到,最好能使用数组分出一段内存专用

使用特权

评论回复
板凳
jxb163| | 2009-3-20 17:39 | 只看该作者

*(unisgned char *)0x20000200=全局变量;

volaitle *(unisgned char *)0x20000200=全局变量

使用特权

评论回复
地板
leino11121|  楼主 | 2009-3-23 09:19 | 只看该作者

回三楼,

回三楼,
你说的是全局变量,数组跟单个变量不同,单个变量可以用上面的方式,更安全的方式是用指针来做,
(volatile unsigned short) *p = (volatile unsigned short)0x20000100;
这样可以直接引用p,也可引用地址

但是数组呢?

使用特权

评论回复
5
leino11121|  楼主 | 2009-3-23 09:24 | 只看该作者

分散加载

昨天试了一上午,采用分散加载的方式可行。呵呵,曲线救国。
在.scat文件中单独开辟一段区域,
  DATA_TEST 0x20000010  0x00000500
  {   
    *(TEST_DATA)
  }

  DATA 0x20000510  0x00004C00
  {   
    * (+RW, +ZI)
  }
TEST_DATA在.c文件中定义
#pragma arm section rwdata = "TEST_DATA"
u16 Test_Data[640]=
{0 };
#pragma arm section

使用特权

评论回复
6
huangxz| | 2012-4-19 16:18 | 只看该作者
学习了,谢谢。

使用特权

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

本版积分规则

19

主题

47

帖子

0

粉丝