用LM3S8962利用FAT文件系统对SD卡进行读写操作,可以实现对文件读写操作,但发现了一个问题,用如下代码只能实现在SD卡中一行数据:
while(1)
{
f_mount(0, &fs);
res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
int len = strlen(buffer);
res = f_write(&fdst, buffer,len , &bw);
f_sync(&fdst);
f_close(&fdst);
f_mount(0, NULL);
}
结果在SD卡中只有一行数据
f_mount(0, &fs);
res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
int len = strlen(buffer);
while(1)
{
res = f_write(&fdst, buffer,len , &bw);
f_sync(&fdst);
}
f_close(&fdst);
f_mount(0, NULL);
可以实现多行的写操作。我想实现的是,对一个文件进行续写
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这不是FAT文件系统的问题
int main(void)
{
static FATFS fs; // Work area (file system object) for logical drive
static FIL fdst; // fsrc,file objects
static BYTE buffer[4096] = {"123 "}; // file copy buffer
static FRESULT res; // FatFs function common result code
static WORD bw; // File R/W countbr,
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC |
SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
while(1)
{
f_mount(0, &fs);
res = f_open(&fdst, "dstfile.txt", FA_OPEN_ALWAYS | FA_WRITE);
res = f_lseek(&fdst, fdst.fsize);
int len = strlen(buffer);
while(1)
{
res = f_write(&fdst, buffer,len , &bw);
f_sync(&fdst);
}
f_close(&fdst);
f_mount(0, NULL);
}
while(1);
}
这是主程序,主要是f_sleek();函数的调用,其作用是找到一个文件的末端。
一周热门 更多>