SRAM

2019-07-24 12:31发布

u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组

今天学了SRAM ,请问这句话是定义数组在内部的位置,然后通过fsmc将此位置写入到片外SRAM,还是直接就把变量定义到片外SRAM了?         
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
18条回答
32初学者
1楼-- · 2019-07-25 21:37
edmund1234 发表于 2018-9-14 20:58
是内部。。。。

请问大神,这个定义然后通过编译器自动写入数据到外部SRAM和通过fsmc写入到外部SRAM有什么不一样吗?
32初学者
2楼-- · 2019-07-26 02:08

u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组
void main()
{
for(ts=0;ts<250000;ts++)testsram[ts]=ts;//预存测试数据
}         
我在代码里面看到这个,这样前面定义数组,后面往数组里写入数据后,可以直接缓存到外部SRAM中吗?这个过程也没用看到FSMC的地址与数据线作用啊,请问这样写到外部SRAM与通过FSMC写到外部SRAM有何不同吗?
32初学者
3楼-- · 2019-07-26 04:05
32初学者 发表于 2018-9-16 14:18
u32 testsram[250000] __attribute__((at(0X68000000)));//测试用数组
void main()
{

还有测试的数据与数组预存的数据不会起到冲突吗?
xuyaqi
4楼-- · 2019-07-26 08:48
 精彩回答 2  元偷偷看……
32初学者
5楼-- · 2019-07-26 10:01
xuyaqi 发表于 2018-9-16 16:11
这些定义与程序都是软件,最后由编译器变成硬件指令序列(机器码序列),由硬件系统执行,你没有看到FSMC ...

噢噢,明白了,其实fsmc与编译器直接关系,是fsmc寄存器配置完成的,只不过用了库函数没有深入看到底层的调用关系
DreamWaterPro
6楼-- · 2019-07-26 14:31
32初学者 发表于 2018-9-16 14:02
请问大神,这个定义然后通过编译器自动写入数据到外部SRAM和通过fsmc写入到外部SRAM有什么不一样吗?

没有不一样,编译器所编译的程序只是告诉单片机需要通过FSMC来对外部的某个地址单元进行读取或者是写入操作,编译器是标记着个区域在外部SRAM中。不是说编译器去写外部SRAM。

一周热门 更多>