(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 ;
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
單片機
+關注
關注
6023文章
44377瀏覽量
628534 -
嵌入式系統
+關注
關注
40文章
3520瀏覽量
128810 -
FATFS
+關注
關注
0文章
43瀏覽量
18211
發布評論請先 登錄
相關推薦
STM32CubeMx入門教程(10):Fatfs文件系統的應用
導語"fatfs是一個小型的文件系統,在小型的嵌入式系統中使用非常的廣泛,STM32CubeMx自帶該文件系統,我們通過簡單的配置就能夠使用
發表于 07-12 11:39
?4366次閱讀
STM32的FATFS文件系統移植筆記
一、序言 經常在網上、群里看到很多人問關于STM32的FATFS文件系統移植的問題,剛好自己最近也在調試這個程序,為了讓大家少走彎路,我把我的調試過程和方法也貢獻給大家。二、
發表于 01-09 15:18
MSP430、STM32、8051單片機fatfs 文件系統移植 W25Q128
MSP430、STM32、8051單片機fatfs 文件系統移植 W25Q128
發表于 11-15 16:21
?32次下載
手把手教你在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位的單片機上而只需做簡單的修改。它
文件系統FatFs的移植
FATFS是一個完全免費開源的FAT文件系統模塊,專門為小型的嵌入式系統而設計。它完全用標準C語言編寫,所以具有良好的硬件平臺獨立性,甚至可以移植到8位的單片機上而只需做簡單的修改。
評論