使用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...