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

这里主要介绍一下 STM32中文件操作系统FATFS的移植。

1.版本 fatfs0.11a

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

3.将压缩后将文件放入user目录-工程模板选择SPIFLASH例程模板

STM32中文件操作系统FATFS的移植_第1张图片

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

STM32中文件操作系统FATFS的移植_第2张图片

2.魔术棒中 设置头文件包含  fatfs\src 目录

STM32中文件操作系统FATFS的移植_第3张图片

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;

STM32中文件操作系统FATFS的移植_第4张图片

以上就是文件系统FATFS的主要移植步骤,接下俩就可以编写一个 demo_fatfs.c文件 对文件系统进行测试啦。

你可能感兴趣的:(stm32)