f_open 返回 FR_INVALID_NAME

lmb*_*ira 3 csv

我正在使用 SD 卡,需要每 5 分钟创建一个新的 csv 文件。

因此,每当我的计时器到期时,我都会创建一个名为“newfile0.csv”、newfile1.csv“的文件,依此类推。它会按预期工作,直到我到达“newfile10.csv”。此时,我开始来获取函数FR_INVALID_NAME的返回值f_open

我已经尝试过不同的方法来创建包含文件名的字符串。我在调用之前也检查了字符串内容f_open,结果没问题。

我将在这里放置一些代码。

char *file_name = (char*)calloc(17,sizeof(char));
if (file_name != NULL )
    printf("error");

char *number = (char*)calloc(10,sizeof(char));
if (number != NULL )
    printf("error");

if (count_files < MAX_NO_FILES){
    count_files++;

    strcat(file_name, "lewfile");
    itoa(file_name, number);
    strcat(file_name, number);
    strcat(file_name, ".csv");
    printf("CONCATENATED STRING: %s", file_name);

    fileSystemResult = f_open(&fileObject[count_files], file_name,      FA_CREATE_ALWAYS | FA_WRITE);
    if (fileSystemResult != FR_OK)
        printf("error creating the file: %d \n\r",fileSystemResult );
Run Code Online (Sandbox Code Playgroud)

我可能错过了什么提示吗?

Jos*_*tro 5

您的文件系统可能仅支持 8.3 格式文件名 (SFN)。当您尝试使用 9 个字符作为文件名时,它会中断。

尝试创建“newf0.csv”、newf1.csv“等。看看当到达“newf10.csv”时它是否会中断。