最近在用LM3S8962进行文件系统的操作,可以实现对文件读写操作,但发现了一个问题,用如下代码只能实现在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);
可以实现多行的写操作。我想实现的是,对一个文件进行续写,比如说一个文件现在里面有1K的数据,现在对这个文件进行续写,但是不能将以前的内容覆盖掉。如何实现,请教下高手。
此帖出自
小平头技术问答
谢谢楼上的帮忙,我已经实现了想要的功能,谢谢。以下是我实现的代码。主程序:
int main(void)
[ 本帖最后由 zheng522 于 2012-1-12 13:40 编辑 ]{
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,
int k = 5,j = 5;
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(k--)
{
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(5)
{
res = f_write(&fdst, buffer,len , &bw);
f_sync(&fdst);
}
f_close(&fdst);
f_mount(0, NULL);
}
while(1);
}
一周热门 更多>