0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32入门学习笔记之文件系统FatFs的移植2

jf_78858299 来源:滑小稽笔记 作者:电子技术园地 2023-02-16 15:26 次阅读

(4)修改disk_read函数如下所示。

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

{

int result;

   switch( pdrv )

   {

          //SD
          case SD_CARD      :

                 result = SD_ReadDisk( buff, sector, count ) ;

                 //读出错

                 while( result )

                 {

                        SD_Init() ;                                      //重新初始化SD卡

                        result = SD_ReadDisk( buff, sector, count ) ;

                 }

          break;

          //外部FLASH读写

          case EX_FLASH     :

                 for( ; count>0; count-- )

                 {

                        W25QXX_Read( buff, sector*512, 512 ) ;

                        sector++;

                        buff+=512;

                 }

          break;

          case DEV_USB       :      break;

   }

   if( result )

          return RES_ERROR ;

   else

          return RES_OK ;

}

(5)修改disk_write函数如下所示。

#if FF_FS_READONLY == 0

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

{

int result;

   switch ( pdrv )

   {

          //SD卡

          case SD_CARD :

                 result = SD_WriteDisk( ( u8* )buff, sector, count ) ;

                 //写出错

                 while( result )

                 {

                        SD_Init() ;                                 //重新初始化SD卡

                        result = SD_WriteDisk( ( u8* )buff, sector, count ) ;

                 }

                 break ;

          //外部FLASH

          case EX_FLASH :

                 for( ; count>0; count-- )

                 {

                        W25QXX_Write( ( u8* )buff, sector*512, 512 ) ;

                        sector ++ ;

                        buff += 512 ;

                 }

                 break ;

          //其他

          case DEV_USB :

                 break ;

   }

   if( result )

          return RES_ERROR ;

   else

          return RES_OK ;

}

#endif

(6)修改disk_ioctl函数如下所示。

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

{

DRESULT res;

   //SD卡

   if( pdrv==SD_CARD )

   {

          switch( cmd )

          {

                 case CTRL_SYNC :

                        res = RES_OK ;

                        break ;

                 case GET_SECTOR_SIZE :

                        *( DWORD* )buff = 512 ;

                        res = RES_OK;

                        break ;

                 case GET_BLOCK_SIZE :

                        *( WORD* )buff = SDCardInfo.CardBlockSize ;

                        res = RES_OK ;

                        break ;

                 case GET_SECTOR_COUNT :

                        *( DWORD* )buff = SDCardInfo.CardCapacity/512 ;

                        res = RES_OK ;

                        break;

                 default :

                        res = RES_PARERR ;

                        break ;

          }

   }

   //外部FLASH

   else if( pdrv==EX_FLASH )

   {

          switch( cmd )

          {

                 case CTRL_SYNC :

                        res = RES_OK ;

                        break ;

                 case GET_SECTOR_SIZE :

                        *( WORD* )buff = 512 ;

                        res = RES_OK ;

                        break ;

                 case GET_BLOCK_SIZE :

                        *( WORD* )buff = 8 ;

                        res = RES_OK ;

                        break ;

                 case GET_SECTOR_COUNT :

                        *( DWORD* )buff = 2048*12 ;

                        res = RES_OK ;

                        break ;

                 default :

                        res = RES_PARERR ;

                        break ;

          }

   }

   else

          res = RES_ERROR ;   //其他的不支持

   return res;

}

(7)由于新版的文件系统去掉了获取时间函数,所以这一个函数需要我们自己添加。

//获取时间

DWORD get_fattime()

{

return 0 ;

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6030

    文章

    44506

    浏览量

    632373
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3556

    浏览量

    129160
  • FATFS
    +关注

    关注

    0

    文章

    44

    浏览量

    18264
收藏 人收藏

    评论

    相关推荐

    基于STM32完成FATFS文件系统移植与运用

    这篇文章主要演示FATFS文件系统如何移植到自己的工程,并完成文件的读写。 因为SD卡采用的是SPI模拟时序,所以,其他单片机一样可以照着移植
    的头像 发表于 03-08 09:17 5857次阅读
    基于<b class='flag-5'>STM32</b>完成<b class='flag-5'>FATFS</b><b class='flag-5'>文件系统</b><b class='flag-5'>移植</b>与运用

    FatFS文件系统STM32F4上的移植和应用

    在实现如U盘文件读写,SD卡的文件读写等工作时,我们往往需要一个文件系统来支持我们的工作。特别在一些MCU应用中,文件系统的加入能明显改善系统
    的头像 发表于 12-13 17:26 2478次阅读
    <b class='flag-5'>FatFS</b><b class='flag-5'>文件系统</b>在<b class='flag-5'>STM32</b>F4上的<b class='flag-5'>移植</b>和应用

    STM32CubeMx入门教程(10):Fatfs文件系统的应用

    导语"fatfs是一个小型的文件系统,在小型的嵌入式系统中使用非常的广泛,STM32CubeMx自带该文件系统,我们通过简单的配置就能够使用
    发表于 07-12 11:39 4947次阅读
    <b class='flag-5'>STM32</b>CubeMx<b class='flag-5'>入门</b>教程(10):<b class='flag-5'>Fatfs</b><b class='flag-5'>文件系统</b>的应用

    FATFS文件系统移植

    这是本人,整理的FATFS文件系统移植资料,很少的一部分,希望大家把自己搜到的比较好的资料,分享一下,本人正在学习fatfs
    发表于 09-11 16:05

    STM32FATFS文件系统移植笔记

    一、序言 经常在网上、群里看到很多人问关于STM32FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。二、
    发表于 01-09 15:18

    FatFs文件系统的原理是什么?如何对FATFS进行移植

    FatFs文件系统的原理是什么?FatFs文件系统移植方法是什么?如何实现eMMC卡中文件的读
    发表于 11-25 07:52

    stm32+sdio+fatfs文件系统_源码分析

    stm32+sdio+fatfs文件系统介绍,通俗易懂。
    发表于 11-06 09:52 25次下载

    MSP430、STM32、8051单片机fatfs 文件系统移植 W25Q128

    MSP430、STM32、8051单片机fatfs 文件系统移植 W25Q128
    发表于 11-15 16:21 35次下载
    MSP430、<b class='flag-5'>STM32</b>、8051单片机<b class='flag-5'>fatfs</b> <b class='flag-5'>文件系统</b><b class='flag-5'>移植</b> W25Q128

    Fatfs文件系统移植

    Fatfs文件系统移植)一、文件系统介绍二、移植条件、说明1、FatFs模块在可
    发表于 11-15 18:51 22次下载
    <b class='flag-5'>Fatfs</b>(<b class='flag-5'>文件系统</b>的<b class='flag-5'>移植</b>)

    文件系统FatFs文件系统在嵌入式芯片LPC18XX上的移植

    文件系统FatFs文件系统在嵌入式芯片LPC18XX上的移植
    发表于 12-04 10:51 12次下载
    【<b class='flag-5'>文件系统</b>】<b class='flag-5'>FatFs</b><b class='flag-5'>文件系统</b>在嵌入式芯片LPC18XX上的<b class='flag-5'>移植</b>

    手把手教你在flash上移植fatfs文件系统(含实时操作系统)

    文章目录基于stm32f103系列MCU,在spi_flash上移植建立fatfs文件系统移植准备FAT
    发表于 12-09 12:51 30次下载
    手把手教你在flash上<b class='flag-5'>移植</b><b class='flag-5'>fatfs</b><b class='flag-5'>文件系统</b>(含实时操作<b class='flag-5'>系统</b>)

    STM32入门学习笔记文件系统FatFs移植1

    FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
    的头像 发表于 02-16 15:26 945次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>文件系统</b><b class='flag-5'>FatFs</b>的<b class='flag-5'>移植</b>1

    STM32入门学习笔记文件系统FatFs移植3

    FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
    的头像 发表于 02-16 15:27 1706次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>入门</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b><b class='flag-5'>之</b><b class='flag-5'>文件系统</b><b class='flag-5'>FatFs</b>的<b class='flag-5'>移植</b>3

    STM32入门学习笔记文件系统FatFs移植4

    FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
    的头像 发表于 02-16 15:27 820次阅读

    文件系统FatFs移植

    FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。
    的头像 发表于 03-01 14:38 1852次阅读
    <b class='flag-5'>文件系统</b><b class='flag-5'>FatFs</b>的<b class='flag-5'>移植</b>