新手上路
- 积分
- 32
- 金钱
- 32
- 注册时间
- 2018-4-3
- 在线时间
- 5 小时
|
10金钱
有熟悉FatFs文件系统的朋友能否帮忙看下我的问题。
我是每隔一秒向SD卡.wav文件写入一个buf数据,wav文件名为时间,buf大小为u8 Buf[2048],如果文件存在,打开文件把数据写入尾部,如果文件不存在,新建文件,但是出现了个问题,就是有时会产生多个相同文件名的文件,这是写入的数据当然也就不对了。如图所示
代码如下:
u8 WriteFile(u8 *databuf,u32 bytesToWrite)
{
FRESULT res;
uint16_t bytesWritten;
uint32_t addr;
u8 ret= false;
DIR dirs;
res = f_mount(0,&fatfs);
res = f_mkdir((XCHAR*)&gCurrentFile.dir_name[0]);
if (res == FR_OK)
{
if(DEBUG_SD_STORE_UART_OUTPUT)
UART_UsrLog(" New Dir \n");
}
else if(res == FR_EXIST)
{
if(DEBUG_SD_STORE_UART_OUTPUT)
UART_UsrLog(" Dir Exist \n");
}
else
{
if(DEBUG_SD_STORE_UART_OUTPUT)
UART_UsrLog(" Mkdir err \n");
f_mount(0, NULL);
return(ret);
}
if ((res == FR_OK) || (res == FR_EXIST))
{
res = f_open(&file, (XCHAR*)&gCurrentFile.file_name[0],FA_OPEN_ALWAYS | FA_WRITE);
if ((res == FR_OK) || (res == FR_EXIST))
{
res = f_lseek(&file,file.fsize);
if(res != FR_OK)
{
f_close(&file);
f_mount(0, NULL);
ret =false;
return(ret);
}
res= f_write (&file, databuf, bytesToWrite, (void *)&bytesWritten);
if((bytesWritten == 0) || (res != FR_OK))
{
if(DEBUG_SD_STORE_UART_OUTPUT)
UART_UsrLog("file write false \n");
ret =false;
}
else
{
ret = true;
}
/*close file and filesystem*/
f_close(&file);
}
else
{
ret = false;
}
}
f_mount(0, NULL);
return(ret);
}
恳请高手指点一下,困扰我好几天了,我用的文件系统是 FatFs - FAT file system module R0.07e
|
-
|