這裏主要介紹一下 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文件 對文件系統進行測試啦。