(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 ;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
单片机
+关注
关注
6034文章
44552浏览量
634439 -
嵌入式系统
+关注
关注
41文章
3587浏览量
129415 -
FATFS
+关注
关注
0文章
44浏览量
18298
发布评论请先 登录
相关推荐
STM32CubeMx入门教程(10):Fatfs文件系统的应用
导语"fatfs是一个小型的文件系统,在小型的嵌入式系统中使用非常的广泛,STM32CubeMx自带该文件系统,我们通过简单的配置就能够使用
发表于 07-12 11:39
•5324次阅读
STM32的FATFS文件系统移植笔记
一、序言 经常在网上、群里看到很多人问关于STM32的FATFS文件系统移植的问题,刚好自己最近也在调试这个程序,为了让大家少走弯路,我把我的调试过程和方法也贡献给大家。二、
发表于 01-09 15:18
MSP430、STM32、8051单片机fatfs 文件系统移植 W25Q128
MSP430、STM32、8051单片机fatfs 文件系统移植 W25Q128
发表于 11-15 16:21
•36次下载
手把手教你在flash上移植fatfs文件系统(含实时操作系统)
文章目录基于stm32f103系列MCU,在spi_flash上移植建立fatfs文件系统移植准备FAT
发表于 12-09 12:51
•30次下载
STM32入门学习笔记之文件系统FatFs的移植1
FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
STM32入门学习笔记之文件系统FatFs的移植3
FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
STM32入门学习笔记之文件系统FatFs的移植4
FATFS是一个完全免费开源的FAT文件系统模块,专门为小型的嵌入式系统而设计。它完全用标准C语言编写,所以具有良好的硬件平台独立性,甚至可以移植到8位的单片机上而只需做简单的修改。它
评论