高级会员
- 积分
- 600
- 金钱
- 600
- 注册时间
- 2015-9-7
- 在线时间
- 140 小时
|
1金钱
遇到一个奇怪的问题,STM32H723 开启了ICACHE DCACHE ,写了一个程序测试外扩SDRAM,下面程序中的2处if判断不正常
uint32_t pbuffer[(32*1024*1024)/4] __attribute__((section(".bss.ARM.__at_0xC0000000")));//0xC0000000是SDRAM1的起始地址
uint32_t i = 0,err = 0;
void sdram_test(void)
{
for(i=0;i < (32*1024*1024)/4;i++)
{
pbuffer[i] = 111;
}
for(i=0;i < (32*1024*1024)/4;i++)
{
pbuffer[i] = i;
}
err = 0;
for(i=0;i < (32*1024*1024)/4;i++)
{
if(pbuffer[i]!=i) // 这里i大于66000多后i具体值不定,就会让下面的err++,但是实际上打印出来pbuffer[i]==i的
{err++;}
if(err==10) //这里面我让err等于10的时候才打印,但是但凡err大于0后就会打印
{printf("start err:%i=d,buf[i]=%d\n",i,pbuffer[i]);}
}
if(err){printf("err:%d\n",err);}
else
printf("SDRAM TEST OK\n");
}
|
|