我用下面的程序拿 u16 Line_buf[240];来当做buffer写文件:
res=f_mount(0, &fatfs);
while(res)printf("SD mount failed!\n");
res=f_open(&fileW,"0:/output/ph1.bmp",FA_WRITE|FA_OPEN_ALWAYS);//创建并打开
while(res)printf("file create failed!\n");
WriteHeader(&fileW);
WriteBMPInfo(&fileW);
led0=0;
FIFO_RRST_CLR; //读复位
FIFO_RCK_CLR;
FIFO_RCK_SET;
FIFO_RCK_CLR;
FIFO_RRST_SET;
FIFO_RCK_SET;
for(i=0;i<320;i++)
{
for(j=0;j<240;j++)
{
FIFO_RCK_CLR;
data=GPIOB->IDR &0x00ff;
FIFO_RCK_SET;
data<<=8;
FIFO_RCK_CLR;
data|=GPIOB->IDR&0x00ff;
FIFO_RCK_SET;
Line_buf[j]=BGR565toRGB555(data);
}
printf("i=%d:",i);
printf("size=%d,",sizeof(Line_buf));
f_write(&fileW,Line_buf,sizeof(Line_buf),&WRBytes);
printf("written=%d;",WRBytes);
}
结果输出信息:
i=266:size=480,written=480;i=267:size=480,written=480;i=268:size=480,written=480;i=269:size=480,written=480;i=270:size=480,written=394;i=271:size=480,written=0;i=272:size=480,written=0;i=273:size=480,written=0;i=274:size=480,written=0;i=275:size=480,written=0;i=276:size=480,written=0;i=277:size=480,written=0;i=278:size=480,written=0;i=279:size=480,written=0;i=280:size=480,written=0;i=281:size=480,written=0;i=282:size=480,written=0;i=283:size=480,written=0;i=284:size=480,written=0;i=285:size=480,written=0;i=286:size=480,written=0;i=287:size=480,written=0;i=288:size=480,written=0;i=289:size=480,written=0;i=290:size=480,written=0;i=291:size=480,written=0;i=292:size=480,written=0;i=293:size=480,written=0;i=294:size=480,written=0;i=295:size=480,written=0;i=296:size=480,written=0;i=297:size=480,written=0;i=298:size=480,written=0;i=299:size=480,written=0;i=300:size=480,written=0;i=301:size=480,written=0;i=302:size=480,written=0;i=303:size=480,written=0;i=304:size=480,written=0;i=305:size=480,written=0;i=306:size=480,written=0;i=307:size=480,written=0;i=308:size=480,written=0;i=309:size=480,written=0;i=310:size=480,written=0;i=311:size=480,written=0;i=312:size=480,written=0;i=313:size=480,written=0;i=314:size=480,written=0;i=315:size=480,written=0;i=316:size=480,written=0;i=317:size=480,written=0;i=318:size=480,written=0;i=319:size=480,written=0;
前面的写入与size是相等的,都为480,但是在i=270之后就出现问题了,以后都会写入0个字节,请问这是怎么回事?
|