ファイルを開き、単一の数値を読み取り、数値を追加してファイルに書き戻す小さなコードがあります。を使用すると正常に動作しますf_write
が、f_open
戻りますFR_INT_ERR
。バージョン R0.12c を使用しています。エラーを生成するコード:
FIL indexFile;
char chars[10] = {0};
uint16_t indexNumber = 0;
FRESULT fr;
fr = f_open(&indexFile, INDEX_NAME, FA_READ | FA_WRITE | FA_OPEN_EXISTING);
fr = f_read(&indexFile, &chars, 10, &br);
indexNumber = atoi(chars);
fr = f_lseek(&indexFile, 0);
fr = f_printf(&indexFile, "%d", indexNumber+1); // produces assertion error
if (fr != FR_OK) printf("Something went wrong");
しかしfr = f_printf(&indexFile, "%d", indexNumber+1);
、次のように変更すると、文句はありません。
char stringBuffer[5];
sprintf(stringBuffer, "%d", indexNumber+1);
UINT bw;
fr = f_write(&indexFile, stringBuffer, strlen(stringBuffer), &bw);
if (fr != FR_OK || strlen(stringBuffer) != bw) printf("something went wrong");
私は2番目のアプローチを使い続けることができますが、私は何が悪いのかを理解する必要があるタイプの人です.
ところで:私はSTM32を使用しています