第60講sd卡fatfs文件系統(tǒng)實(shí)驗(yàn)_第1頁(yè)
第60講sd卡fatfs文件系統(tǒng)實(shí)驗(yàn)_第2頁(yè)
第60講sd卡fatfs文件系統(tǒng)實(shí)驗(yàn)_第3頁(yè)
第60講sd卡fatfs文件系統(tǒng)實(shí)驗(yàn)_第4頁(yè)
第60講sd卡fatfs文件系統(tǒng)實(shí)驗(yàn)_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記舉一反三課堂筆記STM8開發(fā)板課件文檔:http: HYPERLINK http:/z/ http:/z:zxkj-ly,免費(fèi)獲取STM8 資料。公眾STM8 技術(shù)【】版本號(hào):V2.0第 1頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記第 60 講SD 卡 FATFS 文件系統(tǒng)實(shí)驗(yàn)?zāi)?錄60.1 實(shí)驗(yàn)?zāi)康?60.2 FATFS 開放函數(shù)360.3 底層驅(qū)動(dòng)函數(shù)使用460.4 程序文件設(shè)計(jì)660.4.1main.c 文件中的程序760.4.2pbd文件中的程序960.4.3pbdata.h 文件中的程序1060.4.4sd.c 文件

2、中的程序1160.4.5sd.h 文件中的程序1160.4.6spi.c 文件中的程序1160.4.7spi.h 文件中的程序1160.4.8uart1.c 文件中的程序1160.4.9uart1.h 文件中的程序1260.5 實(shí)驗(yàn)效果12版本號(hào):V2.0第 2 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記60.1 實(shí)驗(yàn)?zāi)康囊浦睩ATFS 文件系統(tǒng),并且通過FATFS 文件系統(tǒng)讀寫SD 卡數(shù)據(jù)。60.2 FATFS 開放函數(shù)f_mount -/注銷一個(gè)工作區(qū)域(Work Area)f_open - 打開/創(chuàng)建一個(gè)文件f_close - 關(guān)閉一個(gè)文件f_read - 讀文件f

3、_write - 寫文件f_lseek - 移動(dòng)文件讀/寫指針f_truncate -截?cái)辔募_sync - 沖洗緩沖數(shù)據(jù) Flush Cached Dataf_forward - 直接轉(zhuǎn)移文件數(shù)據(jù)到一個(gè)數(shù)據(jù)流f_s- 獲取文件狀態(tài)f_opendir - 打開一個(gè)目錄f_closedir -關(guān)閉一個(gè)已經(jīng)打開的目錄f_readdir -目錄條目f_mkdir - 創(chuàng)建一個(gè)目錄f_unlink -刪除一個(gè)文件或目錄f_od -改變屬性(Attribute)f_utime -改變時(shí)間戳(Timest)f_rename - 重命名/移動(dòng)一個(gè)文件或文件夾版本號(hào):V2.0第 3 頁(yè) 共 12 頁(yè):(眾想

4、)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記f_chdir - 改變當(dāng)前目錄f_chdrive -改變當(dāng)前驅(qū)動(dòng)器f_getcwd -獲取當(dāng)前工作目錄f_getfree -獲取空閑簇 Get Free Clustersf_getlabel - Get volume labelf_setlabel - Set volume labelf_mkfs - 在驅(qū)動(dòng)器上創(chuàng)建一個(gè)文件系統(tǒng)f_fdisk - Divide a physical drivef_gets-讀一個(gè)字符串f_p-寫一個(gè)字符f_puts-寫一個(gè)字符串f_prf- 寫一個(gè)格式化的字符串f_l-獲取當(dāng)前讀/寫指針f_eof - 測(cè)試文件結(jié)束f_

5、size - 獲取文件大小f_error - 測(cè)試文件上的錯(cuò)誤60.3 底層驅(qū)動(dòng)函數(shù)使用SD 文件夾是我公司在的“ff12b”文件的基礎(chǔ)上整理完成的,主要是增加了一些底層驅(qū)動(dòng)和一些頂層應(yīng)用的函數(shù),做成的一個(gè)安裝包。初學(xué)者可以直接調(diào)用和整理出來的這個(gè)安裝包就可以??梢允∪サ摹癴f12b”文件。版本號(hào):V2.0第 4 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記在SD 文件中夾有兩個(gè)文件夾,“BSP”文件夾中是文件是 SD 卡的應(yīng)用程序,可以把他保存到這個(gè)工程中的“BSP”文件夾中。在SD 文件夾中有兩個(gè)文件夾,“ff”文件夾中的全部文件直接拷貝到這個(gè)工程的根目錄中。在的IAR

6、 工程中新建“ff”文件夾,把“ff.c”、“diskio.c”、“cc936.c”三個(gè)文件引入到工程中?!癴f.c”文件是文件系統(tǒng)的底層執(zhí)行程序;“diskio.c”文件是文件系統(tǒng)的接口程序;“cc936.c”文件是文件系統(tǒng)的字庫(kù)程序;引入完成文件后還要進(jìn)行相關(guān)的一些配置。圖 60.1“Options”配置操作方法如上圖所示,選中工程項(xiàng)目文件擊右鍵,彈出框,光標(biāo)移動(dòng)到“Options”選型單擊鼠標(biāo)。彈出配置框,如圖“60.2“Options”配置界面”。版本號(hào):V2.0第 5 頁(yè) 共 12頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記圖 60.2“Options”配置界面一圖 60.3“

7、Options”配置界面二在下拉框中新增加一條路徑,選中現(xiàn)有的的路徑,把光標(biāo)移動(dòng)到最末端,粘貼后修改路徑名稱,如右圖所示。60.4 程序文件設(shè)計(jì)版本號(hào):V2.0第 6 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記60.4.1main.c 文件中的程序主程序就實(shí)現(xiàn)初始化和調(diào)用驅(qū)動(dòng)程序,這樣主程序控制思路清晰,流程簡(jiǎn)單。要想了解全面詳實(shí)的程序,請(qǐng)大家參考光盤(網(wǎng)盤)中程序及程序注釋。/*說明:SD 卡 FATFS 文件系統(tǒng)實(shí)驗(yàn) STM8 開發(fā)板https https:/z開發(fā):地址:淘寶網(wǎng)店:公眾 STM8 技術(shù):zxkj-ly,免費(fèi)獲取 STM8 資料?!俊竟枮I科技開發(fā)作版

8、日者:本:期:東V1.02016-05-03IAR 開發(fā)環(huán)境 ST 庫(kù)函數(shù)版本 V2.20.1版本 V2.2.0*/ #include pbdata.h/引入自定義公共頭文件void BSP_Configuration(void);/硬件初始化函數(shù) void SD_Demo(void);/*函 數(shù) 名: main功能說明: c 程序形參:無返 回 值: 錯(cuò)誤代碼(無需處理)*/ main(void)BSP_Configuration();/硬件驅(qū)動(dòng)初始化函數(shù) SD_Demo(); while(1)/主程序循環(huán),反復(fù)執(zhí)行循環(huán)體里的語句FATFS fs;FIL fdst;FRESULT res;U

9、brw;版本號(hào):V2.0第 7 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記u8 Buf=LY-STM8 主講人: void SD_Demo(void)if(SD_Init()=SD_RESPONSE_NO_ERROR)地址;prf(SD 卡初始化成功!rn);elseprf(SD 卡初始化失敗!rn);return;f_mount(&fs,0:,1); res=f_open(&fdst,STM8_01.txt,FA_CREATE_NEW|FA_WRITE); if(res=FR_OK)res=f_write(&fdst,Buf,sizeof(Buf),&brw); f_c

10、lose(&fdst);prf(文件創(chuàng)建成功rn);res=f_open(&fdst,STM8_01.txt,FA_OPEN_EXISTING|FA_READ); while(1)brw=0; memset(Buf,0,sizeof(Buf);res=f_read(&fdst,Buf,sizeof(Buf),&brw);prf(%srn,Buf);if(res|brw=0) break;f_close(&fdst);elseprf(文件已經(jīng)存在rn);/*函 數(shù) 名: BSP_Configuration功能說明: 初始化硬件設(shè)備。只需要調(diào)用一次。該函數(shù)配置 CPU 寄存器和外設(shè)的寄存器并初始化

11、一些全局變量。*形參:無返 回 值: 無*/ void BSP_Configuration(void)版本號(hào):V2.0第 8 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);/時(shí)鐘速度為 UART1_Congfiguration();/調(diào)用 RS232 串口 1 初始化函數(shù) LED_Init();/調(diào)用 LED 初始化函數(shù)SPI_Configuration(); SD_GPIO();rim();/打開總中斷16M,1 分頻,/*斷言函數(shù):它的作用是在編程的過程中為程序提供參數(shù)檢查*/ #

12、ifdef USE_FULL_ASSERTvoid assert_failed(u8* file,u32 line)while(1)#endif60.4.2pbd文件中的程序#include pbdata.h/引入自定義公共頭文件/*函 數(shù) 名: delay_us功能說明: 微秒延時(shí)程序,注意此函數(shù)的運(yùn)行環(huán)境為(16M 時(shí)鐘速度)形參:nCount 要延時(shí)的微秒數(shù),輸入 nCount=1 微妙返 回 值: 無*/void delay_us(u16 nCount)/16M 晶振時(shí)延時(shí) 1 個(gè)微妙nCount*=3;/等同于 nCount=nCount*3相當(dāng)于把 nCount 變量擴(kuò)大 3 倍w

13、hile(-nCount);/nCount 變量數(shù)值先減一,再判斷 nCount 的數(shù)值是否大于 0,大于 0 循環(huán)減一,等于 0 退出循環(huán)。/*函 數(shù) 名: delay_ms功能說明: 毫秒延時(shí)程序,注意此函數(shù)的運(yùn)行環(huán)境為(16M 時(shí)鐘速度)形參:nCount 要延時(shí)的毫秒數(shù),輸入 nCount=1 毫秒返 回 值: 無*/ void delay_ms(u16 nCount)/16M 晶振時(shí)延時(shí) 1 個(gè)毫秒while(nCount-)/先判斷while()循環(huán)體里的nCount 數(shù)值是否大于 0,大于 0 循環(huán),減一執(zhí)行循環(huán)體,等于 0 退出循環(huán)。版本號(hào):V2.0第 9 頁(yè) 共 12 頁(yè):(

14、眾想)哈爾濱delay_us(1000);/調(diào)用微妙延時(shí)函數(shù),輸入 1000 等譯演示 1 毫秒??萍奸_發(fā)STM8 開發(fā)板課堂筆記/*函 數(shù) 名: Get_decimal功能說明: 獲得數(shù)值小數(shù)部分形參:dt 輸入數(shù)據(jù) deci 小數(shù)位數(shù),最多保留 4 位小數(shù)返 回 值: 放大后的小數(shù)部分*/u16 Get_decimal(double dt,u8 deci)long x1=0;u16 x2=0,x3=0;/獲得數(shù)值小數(shù)部分if(deci4) if(deci1) x3=(u16)deci=4; deci=1; (10, deci);x1=(long)(dt*x3); x2=(u16)(x1%x

15、3);return x2;60.4.3pbdata.h 文件中的程序#ifndef _PBDATA_H/宏定義,定義文件名稱 #define _PBDATA_H#include #include #include #includestm8s.h/引入 STM8 的頭文件/需要 math.h/需要 string.h這個(gè)頭文件才能實(shí)現(xiàn)這個(gè)頭文件才能實(shí)現(xiàn)#include #include #include #include #include #include #includeled.h / uart1.h/ spi.hsd.h diskio.h ffconf.h ff.hLED 頭文件 RS232

16、頭文件void delay_us(u16 nCount); /微秒延時(shí)程序 void delay_ms(u16 nCount); /毫秒延時(shí)程序u16 Get_decimal(double dt,u8 deci);/獲得數(shù)值小數(shù)部分 #endif /定義文件名稱結(jié)束版本號(hào):V2.0第 10 頁(yè) 共 12 頁(yè):(眾想)哈爾濱科技開發(fā)STM8 開發(fā)板課堂筆記60.4.4sd.c 文件中的程序底層驅(qū)動(dòng)程序,直接加入到工程中即可。詳細(xì)程序請(qǐng)參考程序例程。60.4.5sd.h 文件中的程序底層驅(qū)動(dòng)程序,直接加入到工程中即可。詳細(xì)程序請(qǐng)參考程序例程。60.4.6spi.c 文件中的程序#include p

17、bdata.hvoid SPI_Configuration(void)SPI_Init(SPI_BIT_MSB,SPI_BAUDRATEPRESCALER_4,SPI_MODE_MASTER,SPI_CLOCKPOLARITY_LOW,SPI_CLOCKPHASE_1EDGE,SPI_DATADIRECTION_2LINES_FULLDUPLEX,SPI_NSS_SOFT,0 x07);SPI_Cmd(ENABLE);u8 SPI_SendByte(u8 byte)while(SPI_GetFlagSus(SPI_FLAG_TXE)=RESET); SPI_SendData(byte);while(SPI_GetFlagSus(SPI_FLAG_RXNE)=RESET);return SPI_ReceiveData();60.4.7spi.h 文件中的程序#ifndef _SPI_H/宏定義,定義文件名稱 #define _SPI_H#include stm8s.h/STM8 頭文件void S

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論