OpenEdv-开源电子网

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

一个外部SRAM实验程序疑问

[复制链接]

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2018-4-4 10:21:12 | 显示全部楼层 |阅读模式
1金钱
main函数中
u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组
这句是不是把这个数组在内存中的位置设置在0x68000000开始的一个数组?往这个数组里存储数据是不是就是存储在外部SRAM中了?比如程序中在下面的语句
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据       
这句运行完以后存储在这个数组中的数据是不是在从0x68000000开始的地址上,也就是SRAM中呢?因为前面定义数组的时候单片机就要给这个数组分配内存。

还有个问题,这句运行后数组中元素的数据并没有得到当初想要的结果
Snap1.jpg

testsram[4]=0x0000000C, 并不是0x00000004,这是什么原因?

最佳答案

查看完整内容[请看2#楼]

是的,这样定义以后,操作testram就是操作外部sram
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-4-4 10:21:13 | 显示全部楼层
是的,这样定义以后,操作testram就是操作外部sram
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-4-4 11:23:02 | 显示全部楼层
外部SRAM硬件连接的是BANK1的第三区,第三区的地址是 第 3 区 FSMC_NE3 0X6800,0000~6BFF,FFFF ,所以存储的起始地址就是0X6800,0000,这个地址和硬件连接有关。
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2018-4-4 19:15:39 | 显示全部楼层
HXYDJ 发表于 2018-4-4 11:23
外部SRAM硬件连接的是BANK1的第三区,第三区的地址是 第 3 区 FSMC_NE3 0X6800,0000~6BFF,FFFF ,所以存储 ...

你好,我是想问for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据这句执行后,数组的第一个元素是不是存储在0x68000000地址上?
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2018-4-5 15:16:29 | 显示全部楼层
正点原子 发表于 2018-4-4 10:21
是的,这样定义以后,操作testram就是操作外部sram

你好,原子老师
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据
这句也是操作外部SRAM吗?为什么没有用到外部SRAM的读写程序?
还有就是操作后testsram[4]=0x0000000C, 而不是等于0x00000004?
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2018-4-9 07:13:28 | 显示全部楼层
继续求解
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2018-4-11 19:53:48 | 显示全部楼层
你好,原子老师
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据
这句也是操作外部SRAM吗?为什么没有用到外部SRAM的读写程序?
还有就是操作后testsram[4]=0x0000000C, 而不是等于0x00000004?
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
 楼主| 发表于 2018-4-13 12:58:44 | 显示全部楼层
明白了,操作外部SRAM的时候,STM32会自动利用FSMC进行操作。
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据
对0x68000000开始的一个数组赋值。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 11:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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