STM32中檔案作業系統FATFS的移植

2021-08-21 20:49:23 字數 2400 閱讀 2916

這裡主要介紹一下 stm32中檔案作業系統fatfs的移植。

1.版本 fatfs0.11a

3.將壓縮後將檔案放入user目錄-工程模板選擇spiflash例程模板

1.在mdk工程介面中新建fatfs目錄,新增如下檔案:

2.魔術棒中 設定標頭檔案包含  fatfs\src 目錄

3. 在ffconf.h 檔案中 進行如下修改: #define    _use_mkfs        1 // 0-->1  line 42

#define _code_page    936  //932-->936 日文到中文  line 64

#define    _use_lfn    1 // 0->1 支援長檔名 line 93

#define _volumes    1   //根據你使用的碟符數 自行更改  141

#define    _max_ss    4096 // 512-->4096 spi 扇區大小為4096  163

#define    _fs_lock    3 //  0-->3 支援同時開啟檔案數 3個  217

4. 在diskio.h 檔案中 增加如下**:

/* definitions of physical drive number for each media */

#define fs_spi_flash 0

#define fs_sd         1

/* 用於 r0.11 新版本 */

#define fs_volume_spiflash      "0:"

#define fs_volume_sd          "1:「

其中 sd卡部分可以注釋掉 用於後期擴充套件sd卡的檔案系統使用

5. 在diskio.c 檔案中 修改如下:

標頭檔案 更改: #include "diskio.h"          

/* fatfs lower layer api */

#include "bsp.h「 注釋掉原始的幾個碟符   ata  mmc  usb 改寫下面 最重要的5個函式

dstatus disk_initialize (byte pdrv);

dstatus disk_status (byte pdrv);

dresult disk_read (byte pdrv, byte* buff, dword sector, uint count);

dresult disk_write (byte pdrv, const byte* buff, dword sector, uint count);

dresult disk_ioctl (byte pdrv, byte cmd, void* buff);

dstatus disk_initialize (byte pdrv)

核心如下:

switch (pdrv) {          

case fs_spi_flash :          

bsp_initsflash();              

stat =  res_ok;                

break;

disk_status

核心如下:

switch (pdrv) {        

case fs_spi_flash :                

bsp_initsflash();            

stat =  res_ok;              

break;

disk_read 核心如下:

以上就是檔案系統fatfs的主要移植步驟,接下倆就可以編寫乙個 demo_fatfs.c檔案 對檔案系統進行測試啦。

STM32實時作業系統

1 裸機和作業系統的區別 裸機是在乙個main函式裡執行的,除了有中斷才會跳到其他地方,否則就會一直按照位址不斷加4來執行 為什麼是加4呢 順序的執行結構就是你可以通過 找到相應的執行流程。作業系統 main函式當通過函式堆疊切換的跳轉到第乙個任務之後,第乙個任務好像還是預設的,通過優先順序的判斷優...

STM32學習 使用檔案系統FAT

1 我在使用stm32進行檔案操作時,學習和使用了fatfs檔案系統。如下圖所示,關鍵在於 fatfs module 和 lowlevel disk i o layer。2 在專案中需要將fatfs module 和 lowlevel disk i o layer 各自 的內容分別定義好。我所涉及的...

stm32作業系統ucosiii筆記02

臨界段 critical sections 1 為了實現資源共享,乙個作業系統必須提供臨界段操作的功能 2 uc os iii 為了處理林階段 需要關中斷,處理完畢後需要開中斷 避免其他任務或中斷服務進入臨界段 3 uc os iii 定義兩個巨集 macros 開關中斷 os enter crit...