這裡主要介紹一下 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...