已被外部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-22 05:24
回复【4楼】763504843@qq.com:
---------------------------------
那你一次就只存储了1个字节了.
长昵称不被占用
2楼-- · 2019-07-22 07:46
763504843@qq.co 发表于 2015-5-23 12:17
回复【2楼】正点原子:
---------------------------------
我那个n一直为1,是指一直把n=1带入for循环。。 ...

再次调用,在1K、2K。。等又从新调用赋值了,并不是你说的+2 +3

一周热门 更多>