首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

STM32的FATFS文件系统移植笔记(2)

STM32的FATFS文件系统移植笔记(2)

复制代码FATFS底层读数据函数:
  • DRESULT disk_read (
  •                 BYTE drv,                /* Physical drive nmuber (0..) */
  •                 BYTE *buff,                /* Data buffer to store read data */
  •                 DWORD sector,        /* Sector address (LBA) */
  •                 BYTE count                /* Number of sectors to read (1..255) */
  •         )
  •         {
  •                 if( !count )
  •                 {
  •                         return RES_PARERR;  /* count不能等于0,否则返回参数错误 */
  •                 }
  •                 switch (drv)
  •                 {
  •                         case 0:
  •                             if(count==1)            /* 1个sector的读操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                             else                    /* 多个sector的读操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                         case 1:
  •                             if(count==1)            /* 1个sector的读操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                             else                    /* 多个sector的读操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                         default:
  •                                 return RES_ERROR;
  •                 }
  •         }

复制代码
FATFS底层写数据函数:
  • DRESULT disk_write (
  •                 BYTE drv,                        /* Physical drive nmuber (0..) */
  •                 const BYTE *buff,                /* Data to be written */
  •                 DWORD sector,                /* Sector address (LBA) */
  •                 BYTE count                        /* Number of sectors to write (1..255) */
  •         )
  •         {
  •                 if( !count )
  •                 {
  •                         return RES_PARERR;  /* count不能等于0,否则返回参数错误 */
  •                 }
  •                 switch (drv)
  •                 {
  •                         case 0:
  •                             if(count==1)            /* 1个sector的写操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                             else                    /* 多个sector的写操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                         case 1:
  •                             if(count==1)            /* 1个sector的写操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                             else                    /* 多个sector的写操作 */
  •                             {
  •                                         return RES_OK;
  •                             }
  •                         default:return RES_ERROR;
  •                 }
  •         }

复制代码
FATFS磁盘控制函数:
  • DRESULT disk_ioctl (
  •                 BYTE drv,                /* Physical drive nmuber (0..) */
  •                 BYTE ctrl,                /* Control code */
  •                 void *buff                /* Buffer to send/receive control data */
  •         )
  •         {
  •                 if (drv==0)
  •                 {
  •                         switch (ctrl)
  •                         {
  •                                 case CTRL_SYNC :
  •                                         return RES_OK;
  •                                 case GET_SECTOR_COUNT :
  •                                 return RES_OK;
  •                                 case GET_BLOCK_SIZE :
  •                                 return RES_OK;
  •                                 case CTRL_POWER :
  •                                         break;
  •                                 case CTRL_LOCK :
  •                                         break;
  •                                 case CTRL_EJECT :
  •                                         break;
  •                         /* MMC/SDC command */
  •                                 case MMC_GET_TYPE :
  •                                         break;
  •                                 case MMC_GET_CSD :
  •                                         break;
  •                                 case MMC_GET_CID :
  •                                         break;
  •                                 case MMC_GET_OCR :
  •                                         break;
  •                                 case MMC_GET_SDSTAT :
  •                                         break;
  •                         }
  •             }else if(drv==1){
  •                         switch (ctrl)
  •                         {
  •                                 case CTRL_SYNC :
  •                                         return RES_OK;
  •                                 case GET_SECTOR_COUNT :
  •                                 return RES_OK;
  •                                 case GET_SECTOR_SIZE :
  •                                         return RES_OK;
  •                                 case GET_BLOCK_SIZE :
  •                                 return RES_OK;
  •                                 case CTRL_POWER :
  •                                         break;
  •                                 case CTRL_LOCK :
  •                                         break;
  •                                 case CTRL_EJECT :
  •                                         break;
  •                         /* MMC/SDC command */
  •                                 case MMC_GET_TYPE :
  •                                         break;
  •                                 case MMC_GET_CSD :
  •                                         break;
  •                                 case MMC_GET_CID :
  •                                         break;
  •                                 case MMC_GET_OCR :
  •                                         break;
  •                                 case MMC_GET_SDSTAT :
  •                                         break;
  •                         }
  •                 }
  •                 else{
  •                         return RES_PARERR;
  •                 }
  •                 return RES_PARERR;
  •         }
继承事业,薪火相传
返回列表