This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C129关于USB host_msc例程问题,在用f_write向U盘中写数据的时候,可以建立txt文件,但里面的数据都是空的



用的TM4C129XL板子中usb_host_msc例程,在里面添加了一段向U盘中写数据的程序,板子的usb口插入U盘,在U盘中新建test.txt文本文件,并调用f_write向文件中写数据,结果出现了这样的问题:

在调用f_mount, f_open, ... 都没有返回错误的情况下,U盘中可以新建test.txt文本文件,但再用电脑打开U盘时里面是空的,程序如下:

fresult1 = f_mount(0, &g_sFatFs);
fresult1 = f_open(&g_sFileObject,"0:mytext23.txt",FA_OPEN_ALWAYS | FA_WRITE );
if(fresult1 == FR_OK)
{
  fresult1 = f_lseek(&g_sFileObject,g_sFileObject.fsize);
  fresult1 = f_write(&g_sFileObject,myBuff,sizeof(myBuff)-1,&tw);
  fresult1 = f_close(&g_sFileObject);
}
(此时test.txt里面是空的)

但是,在执行完上面这段程序后,如果紧接着再对该文件执行读操作,就能从test.txt中读到之前写入的数据,也完全正确,而且test.txt里面不再是空白的,之前的数据都写进去了,代码:

fresult1=f_open(&g_sFileObject,"0:mytext23.txt",FA_OPEN_EXISTING | FA_READ );
if(fresult1 == FR_OK)
{
  fresult1 = f_read(&g_sFileObject,myBuff2,10,&tw);
  fresult1 = f_close(&g_sFileObject);
}
(执行完上面两段程序后,test.txt里面才出现写入的数据)

为什么只用f_write无法把数据写入文件,而f_write之后再f_read才能把数据写到文件里呢?

谢谢了!