这里主要介绍一下 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文件 对文件系统进行测试啦。