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