FatFs進行f_open操作的時候返回FR_NO_FILESYSTEM原因之一

在進行移植FatFs文件系統的時候,單片機採用的是STM32,移植的底層讀、寫、擦除函數都正確,但是一進行打開文件操作的時候就返回FR_NO_FILESYSTEM錯誤(13),該錯誤的原因有很多種,網友DevLab是在他的博客裏面分析的比較透徹,他的文章鏈接http://www.devlabs.cn/?p=226,分析的很到位。

但是我的錯誤出現的原因是另外的錯誤,我在執行f_open之前進行了SD_EraseTest();,SD_SingleBlockTest();、SD_MultiBlockTest();操作,這些操作將SD卡強制進行數據操作,甚至擦除和改寫了SD卡引導區的數據,導致SD卡內的FAT、FAT16、FAT32等系統丟失,從而導致了FR_NO_FILESYSTEM的錯誤,避免該錯誤的方式就是使用PC將SD卡重新格式化成FAT/FAT16/FAT32等文件系統,讓後將單片機程序中的SD_EraseTest();,SD_SingleBlockTest();、SD_MultiBlockTest();這些操作刪除掉就可以解決這些問題。


示意代碼如下:

//    SD_EraseTest();
//    SD_SingleBlockTest();
//    SD_MultiBlockTest();

      res = f_mount(0, &fs);
printf("\r\nf_mountº¯Êý·µ»ØÖµ:%d\r\n",res);
res = f_open(&testFile,"testfile.txt",FA_WRITE | FA_READ | FA_OPEN_ALWAYS);
if(res != FR_OK)
 {
 printf("failed to open file!\r\n",);
 }
 else
 {
 res = f_lseek(&testFile, 0);
 res = f_write(&testFile,data,100,&ByteRead);
 res = f_lseek(&testFile, 0);
 }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章