最近在STM32F429的平台上移植FATFS文件系统时发现,在创建CSV文件后,每次追加数据都会将原先的覆盖掉。源代码如下:
u32 result;
uint8_t wtext1[] = "This is STM32 working with 1,ok\r\n";
uint8_t wtext2[] = "This is STM32 working with 2,ok\r\n";
uint8_t wtext3[] = "This is STM32 working with 3,ok\r\n";
if (f_mount(&FatFs,"", 1) == FR_OK)
{
if(f_open (&fil,"TempLog.csv", FA_CREATE_ALWAYS | FA_READ | FA_WRITE) == FR_OK)
{
result = f_size(&fil);
res= f_lseek(&fil,result);
res= f_write(&fil, wtext1, sizeof(wtext1), (void *)&br);
res= f_write(&fil, wtext2, sizeof(wtext2), (void *)&br);
res= f_write(&fil, wtext3, sizeof(wtext3), (void *)&br);
}
f_close(&fil);
}
f_mount(0, "",1);
以上的程序运行在一个死循环中,但是发现CSV文件中永远只有3行数据,无法追加,进过单步调试发现result的值一直为0.
后来发现原因:
把上面代码中的FA_CREATE_ALWAYS换成FA_OPEN_ALWAYS就解决问题了。
https://blog.csdn.net/beckwest/article/details/51435164?utm_source=blogxgwz4