STM32的SD驅動 FATFS檔案系統

2021-10-20 08:07:02 字數 3468 閱讀 3348

2、stlink v2

3、cp2102 usb轉串列埠

4、8g sd卡

5、stm32cubemx

6、keil mdk

匯出的工程可以直接編譯。最終程式執行順序為:主函式–>檔案系統應用程式–>檔案系統–>晶元sdio介面驅動。我們需要編寫的只有主函式(main.c)和檔案系統應用程式(fatfs.c)

main函式中新增sdtest()函式。我們在此函式中進行檔案開啟讀寫操作。函式定義在"fatfs.c",並在fatfs.h宣告。

main函式中有關sd部分函式執行順序為mx_sdio_sd_init();-》mx_fatfs_init();-》sdtest();

int

main

(void

)/* user code end 3 */

}

3、f_open建立並開啟檔案「stm32.txt」

4、f_write寫入第乙個文字

5、f_close關閉檔案

6、f_open開啟檔案「stm32.txt」

7、f_read讀取檔案「stm32.txt」

8、f_close關閉檔案

6、f_open再次開啟檔案「stm32.txt」

7、f_write寫入第二個文字

8、f_close關閉檔案

9、f_open開啟檔案「stm32.txt」

10、f_read讀取檔案「stm32.txt」

11、f_close關閉檔案

#include "fatfs.h"

uint8_t retsd;

/* return value for sd */

char sdpath[4]

;/* sd logical drive path */

fatfs sdfatfs;

/* file system object for sd logical drive */

fil sdfile;

/* file object for sd */

/* user code begin variables */

static uint8_t buffer[_max_ss]

;/* a work buffer for the f_mkfs() */

fresult res;

/* fatfs function common result code */

uint32_t byteswritten, bytesread;

/* file write/read counts */

uint8_t wtext=

"this is stm32 working with fatfs"

;/* file write buffer1 */

uint8_t wtext2=

"this is second write"

;/* file write buffer2 */

uint8_t rtext[

100]

;/* file recive buffer1*/

uint8_t rtext2[

100]

;/* file recive buffer2*/

void

sdtest

(void);

/* user code end variables */

void

mx_fatfs_init

(void

)/**

* @brief gets time from rtc

* @param none

* @retval time in dword

*/dword get_fattime

(void

)void

sdtest

(void);

f_close

(&sdfile)

;printf

("10.text close\r\n");

//first read

f_open

(&sdfile,

"stm32.txt"

, fa_read)

;printf

("9.open file\r\n");

f_read

(&sdfile, rtext,

f_size

(&sdfile)

,(uint*

)&bytesread)

;printf

("10.text read:%s\r\n"

,rtext)

;f_close

(&sdfile)

;printf

("10.text close\r\n");

//second write

f_open

(&sdfile,

"stm32.txt"

, fa_write)

;// remove fa_create_always

printf

("11.open file2\r\n");

f_lseek

(&sdfile,

f_size

(&sdfile)-1

);//移動寫入位置到檔案末尾

f_write

(&sdfile, wtext2,

sizeof

(wtext2),(

void*)

&byteswritten)

;printf

("12.fatfs write2\r\n");

f_close

(&sdfile)

;printf

("10.text close\r\n");

//second read

f_open

(&sdfile,

"stm32.txt"

, fa_read)

;printf

("13.open file2\r\n");

f_read

(&sdfile, rtext2,

f_size

(&sdfile)

,(uint*

)&bytesread)

;printf

("14.text read2:%s\r\n"

,rtext2)

;f_close

(&sdfile)

;printf

("10.text close\r\n");

}}/*##-11- unlink the micro sd disk i/o driver ###############################*/

// fatfs_unlinkdriver(sdpath);

}

基於stm32移植FATFS檔案系統

2.ff14a source 下就是需要的檔案。ff.c fatfs模組。ffconf.h fatfs模組的配置檔案。ff.h fatfs和應用程式模組的通用包含檔案。diskio.h fatfs 和disk i o模組的公用包含檔案。diskio.c 將現有disk i o模組連線到fatfs的粘...

STM32掛載SD卡記錄日誌

stm32掛載sd卡記錄日誌 程式主要是在前一篇的基礎上進行。使用cube配置stm32掛載tf卡,請看 記錄日誌主要是將執行中的資料轉換為字串,然後再寫入到sd卡。需要解決兩個問題 程式中各種格式的資料變數轉換為字串 sd卡檔案關閉後再次開啟繼續接著寫。解決第乙個問題是使用函式sprintf 函式...

STM32通過Fatfs建立PDF檔案

上面是我建立的群聊,歡迎新朋友的加入。最近想用mcu去建立乙個pdf檔案,曾嘗試移植hpdf和pdfgen,因為這兩個本就不是為微控制器做的庫,移植過程有點複雜了。後面發現st論壇有個發布了乙個pdflib的庫,便做了一下移植。目錄 1.參考鏈結 2.工程說明 3.效果 doc裡面是參考的原始碼,或...