OpenEdv-开源电子网

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

对system_exsram_test(u16 x,u16 y,u8 fsize)这个函数中检测sram大小的原理的疑问

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-6-30
在线时间
0 小时
发表于 2020-6-30 11:47:01 | 显示全部楼层 |阅读模式
1金钱
u8 system_exsram_test(u16 x,u16 y,u8 fsize) {
u32 i=0; u16 temp=0; u16 sval=0;
//在地址0读到的数据
LCD_ShowString(x,y,lcddev.width,y+fsize,fsize,"Ex Memory Test: 0KB");
//每隔1K字节,写入一个数据,总共写入1024个数据,刚好是1M字节
for(i=0;i<1024*1024;i+=1024)
{
FSMC_SRAM_WriteBuffer((u8*)&temp,i,2); temp++;
//依次读出之前写入的数据,进行校验
for(i=0;i<1024*1024;i+=1024)
{
FSMC_SRAM_ReadBuffer((u8*)&temp,i,2); if(i==0)sval=temp; else if(temp<=sval)break;
//后面读出的数据一定要比第一次读到的数据大.
LCD_ShowxNum(x+15*(fsize/2),y,(u16)(temp-sval+1),4,fsize,0);
//显示内存容量
}
红色部分,说每隔1k字节写一个数据,那么i的大小就是代表了字节数,这里i的大小是怎么和sram的字节数联系起来的?
i本身不是32位的吗。
i为0的时候是           0000 0000 0000 0000 0000 0000 0000 0000
i为 1024的时候是     0000 0000 0000 0000 0000 0100 0000 0000
i为 2048的时候是     0000 0000 0000 0000 0000 1000 0000 0000
理论上i在u32的范围内不是随便取值的吗。 u32: [0, ffffffff]                              [0, 4294967295]
为什么会和字节数连到一起,i计数记到4294967295,字节数也是4294967295吗,明显不应该啊


最佳答案

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

这里i的数值作为地址的值在FSMC_SRAM_WriteBuffer()中寻址,也就是在地址为i1的地方写个东西,回头看所写的所有的值,如果有就证明存储空间有i那么大。 整体看了看,看了看FSMC_SRAM_WriteBuffer()代码懂了。觉的问的好蠢。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2020-6-30
在线时间
0 小时
 楼主| 发表于 2020-6-30 11:47:02 | 显示全部楼层
这里i的数值作为地址的值在FSMC_SRAM_WriteBuffer()中寻址,也就是在地址为i1的地方写个东西,回头看所写的所有的值,如果有就证明存储空间有i那么大。
整体看了看,看了看FSMC_SRAM_WriteBuffer()代码懂了。觉的问的好蠢。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 22:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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