对于那个往外部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个地址了。
是不是我理解错了?
---------------------------------
我那个n一直为1,是指一直把n=1带入for循环。。不能一直都等于1。。。。按照代码的话,存储数据不是每隔1kb+1个地址存放吗?
一周热门 更多>