已被外部sram搞晕

2019-07-21 07:30发布

对于那个往外部sram写数据函数
void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 n)
{
for(;n!=0;n--)  
{    
*(vu8*)(Bank1_SRAM3_ADDR+WriteAddr)=*pBuffer;  
WriteAddr++;
pBuffer++;
}   
}
对于红 {MOD}标记那一句不是很懂。在8位的情况下,STM32地址+1我应该算懂。但是结合下面这个代码,就有点晕了
for(i=0;i<1024*8;i+=1024)   //原子哥代码原来是for(i=0;i<1024*1024;i+=4096),就是隔4KB放一个,我为了说明就改了下
{
FSMC_SRAM_WriteBuffer(&temp,i,1);
temp++;
}
假设n一直为1,上面那个for(;n!=0;n--)  和for(i=0;i<1024*1024;i+=4096) 这两个循环一对比,假设外部sram地址从0开始,
我按照程序执行下去,假设隔1KB放一个数据,假设有个8位a[8]数组,依次放到外部sram的地址空间
。如下图

那这样放数据就不是隔1KB,而是隔了1KB+1个地址了。
是不是我理解错了?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
正点原子
1楼-- · 2019-07-21 13:17
 精彩回答 2  元偷偷看……
中国微电脑网
2楼-- · 2019-07-21 18:58
存储完一个存储块应该要加1吧。
763504843@qq.co
3楼-- · 2019-07-21 23:08
回复【2楼】正点原子:
---------------------------------
我那个n一直为1,是指一直把n=1带入for循环。。不能一直都等于1。。。。按照代码的话,存储数据不是每隔1kb+1个地址存放吗?
763504843@qq.co
4楼-- · 2019-07-21 23:32
回复【3楼】中国微电脑网:
---------------------------------
真的吗?对存储数据的地址这些有些懵
763504843@qq.co
5楼-- · 2019-07-22 03:42
回复【2楼】正点原子:
---------------------------------
还是说像2楼说的,存储完一个存储块要+1??
中国微电脑网
6楼-- · 2019-07-22 04:42
 精彩回答 2  元偷偷看……

一周热门 更多>