fatfs檔案系統

2021-08-02 04:22:02 字數 1406 閱讀 4224

使用stm32cubemx新增fatfs下的user-defined,開啟工程,檢視main()可以發現**中先呼叫了mx_fatfs_init()函式,而此函式又呼叫了 fatfs_linkdriver()函式,繼續查詢fatfs_linkdriver()函式,發現此函式第乙個變數為diskio_drvtypedef型別

typedef struct

diskio_drvtypedef;

可以發現此結構體為對u盤底層操作的指標,在fatfs\src\drivers目錄下,我們可以找到,其中已經為我們寫好了sd卡,u盤,sram和sdram的相關底層操作

在fatfs.c檔案中還有乙個函式get_fattime(),此函式為獲取當前系統的時間,經查抄可以發現此函式的實現格式為

((dword)(year- 1980) << 25 | (dword)_month << 21 | (dword)day << 16)

函式什麼時候需要實現

disk_initialize

always

disk_status

always

disk_read

always

disk_write

_fs_readonly == 0

get_fattime

_fs_readonly == 0

disk_ioctl(ctrl_sync)

_fs_readonly == 0

disk_ioctl (get_sector_count)

_use_mkfs == 1

disk_ioctl (get_block_size)

_use_mkfs == 1

disk_ioctl (get_sector_size)

_max_ss > 512

disk_ioctl (ctrl_erase_sector)

_use_erase == 1

ff_convert

_use_lfn >= 1

ff_wtoupper

_use_lfn >= 1

ff_cre_syncobj

_fs_reentrant == 1

ff_del_syncobj

_fs_reentrant == 1

ff_req_grant

_fs_reentrant == 1

ff_rel_grant

_fs_reentrant == 1

ff_mem_alloc

_use_lfn == 3

ff_mem_free

_use_lfn == 3

FATFS檔案系統

二 修改fatfs 主要修改底層裝置驅動函式 diskio.c 目的 就是把 diskio.c 中的函式介面與spi flash 晶元驅動連線起來。總共有五個函式,分別為裝置狀態獲取 disk status 裝置初始化 disk initialize 扇區讀取 disk read 扇區寫入 disk...

FATFS檔案系統讀寫資料

fatfs檔案系統靈活易用,很適合小型嵌入式系統的開發,比如漢字儲存或者將感測器測得的實時資料直接儲存到tf sd卡中,避免了記錄實驗資料的繁重工作,也提高了後期進一步處理資料的效率。fatfs檔案系統參考手冊和 本次試驗採用的是最新的ff12,版本之間的差異詳見版本說明。1.新建工程 新版本直接加...

Fatfs檔案系統學習

移植過程網上有很多,直接參考就可以了。1 學習過程對api重新理解 f mout f mout fs,0 0 掛載 f mout 0,0 0 解除安裝 一直對解除安裝有錯誤的認識,一直以為解除安裝的時候第乙個形參還是 fs。2 英文長檔名的實現 英文長檔名的實現參考了這個朋友的帖子。define c...