cube+sd+fatfs+freertos

搞32的小王發表於2020-12-04

遇到問題及解決
1 注意硬體連線,上拉
2 sd卡的檢測引腳
3 加上freertos之後要在正確的任務裡邊(開始任務)測試
4 各部分的時鐘要對。
自己記錄下遇到的問題,防止以後遺忘?
///
//函式功能:在fatfs模組註冊或登出一個工作區(檔案系統物件)
//引數:fs:fs工作區(檔案系統物件)指標,如果賦值為null,可以取消物理裝置掛載
// path:註冊/登出裝置工作區的邏輯裝置編號,使用裝置根路徑表示
// 0 不立即掛載 1 立即掛載
f_mount(&SDFatFS,SDPath,1) // cube 生成的掛載函式巨集 在檔案fatfs.h裡
//格式化物理裝置
FRESULT f_mkfs(const TCHAR* path, BYTE sfd, UINT au);
引數–> path:邏輯裝置編號,使用裝置根路徑表示
sfd:0或1,0表示為硬碟裝置;1表示為軟盤裝置
au:指定扇區大小,若為0表示通過disk_ioctl函式獲取
//開啟檔案
FRESULT f_open(FIL* fp, const TCHAR* path, BYTE mode);
引數–> fp:將建立或開啟的檔案物件指標
path:檔名指標,指定將建立或開啟的檔名(包含檔案型別字尾名)
mode:訪問型別和開啟方法
mode可選值:
FA_READ 指定讀訪問物件。可以從檔案中讀取資料。 與FA_WRITE結合可以進行讀寫訪問。
FA_WRITE 指定寫訪問物件。可以向檔案中寫入資料。與FA_READ結合可以進行讀寫訪問。
FA_OPEN_EXISTING 開啟檔案。如果檔案不存在,則開啟失敗。(預設)
FA_OPEN_ALWAYS 如果檔案存在,則開啟;否則,建立一個新檔案。
FA_CREATE_NEW 建立一個新檔案。如果檔案已存在,則建立失敗。
FA_CREATE_ALWAYS 建立一個新檔案。如果檔案已存在,則它將被截斷並覆蓋。
//關閉檔案
FRESULT f_close (FIL fp)
引數–> fp:將被關閉的已開啟的檔案物件結構的指標
//寫入資料到一個已開啟的檔案
FRESULT f_write (FIL
fp, const void buff, UINT btw, UINT bw)
引數–> fp:指向將被寫入的已開啟的檔案物件結構的指標
buff:指向儲存寫入資料的緩衝區的指標
btw:要寫入的位元組數
bw:指向返回已寫入位元組數的UINT變數的指標,返回為實際寫入的位元組數
//從一個開啟的檔案讀取資料
FRESULT f_read (FIL* fp, const void buff, UINT btr, UINT br)
引數–> fp:指向將被讀取的已開啟的檔案物件結構的指標
buff:指向儲存讀取資料的緩衝區的指標
btr:要讀取的位元組數
br:指向返回已讀取位元組數的UINT變數的指標,返回為實際讀取的位元組數


//cube檔案系統設定時不可以選用簡體中文,不然老報錯。