STM32中文件操作系統FATFS的移植

這裏主要介紹一下 STM32中文件操作系統FATFS的移植。

1.版本 fatfs0.11a

2.下載地址 http://elm-chan.org/fsw/ff/00index_e.html

3.將壓縮後將文件放入user目錄-工程模板選擇SPIFLASH例程模板

1.在mdk工程界面中新建FatFS目錄,添加如下文件:

2.魔術棒中 設置頭文件包含  fatfs\src 目錄

3. 在ffconf.h 文件中 進行如下修改: #define    _USE_MKFS        1 // 0-->1  line 42

#define _CODE_PAGE    936  //932-->936 日文到中文  line 64

#define    _USE_LFN    1 // 0->1 支持長文件名 line 93

#define _VOLUMES    1   //根據你使用的盤符數 自行更改  141

#define    _MAX_SS    4096 // 512-->4096 SPI 扇區大小爲4096  163

#define    _FS_LOCK    3 //  0-->3 支持同時打開文件數 3個  217

 

4. 在diskio.h 文件中 增加如下代碼:

/* Definitions of physical drive number for each media */

#define FS_SPI_FLASH 0

#define FS_SD         1

/* 用於 R0.11 新版本 */

#define FS_VOLUME_SPIFLASH      "0:"

#define FS_VOLUME_SD          "1:“

其中 SD卡部分可以註釋掉 用於後期擴展SD卡的文件系統使用

 

5. 在diskio.c 文件中 修改如下:

頭文件 更改: #include "diskio.h"          

 /* FatFs lower layer API */

#include "bsp.h“ 註釋掉原始的幾個盤符   ATA  MMC  USB 改寫下面 最重要的5個函數

DSTATUS disk_initialize (BYTE pdrv);

DSTATUS disk_status (BYTE pdrv);

DRESULT disk_read (BYTE pdrv, BYTE* buff, DWORD sector, UINT count);

DRESULT disk_write (BYTE pdrv, const BYTE* buff, DWORD sector, UINT count);

DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);

 

DSTATUS disk_initialize (BYTE pdrv)

核心如下:

switch (pdrv) {          

  case FS_SPI_FLASH :          

      bsp_InitSFlash();              

  stat =  RES_OK;                

break;

 

disk_status

核心如下:

switch (pdrv) {        

    case FS_SPI_FLASH :                

bsp_InitSFlash();            

    stat =  RES_OK;              

  break;

 

disk_read 核心如下:

switch (pdrv) {     

   case FS_SPI_FLASH :           

   sf_ReadBuffer(buff, sector << 12, count<<12);          

   res =  RES_OK;          

   break;              

    default:    res = RES_PARERR;           

 break;  

   }   

 return res;

以上就是文件系統FATFS的主要移植步驟,接下倆就可以編寫一個 demo_fatfs.c文件 對文件系統進行測試啦。

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