久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4100|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

[零基礎(chǔ)學(xué)習(xí)STM32]第十四講:FATFS實驗—文件操作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:278743 發(fā)表于 2018-5-3 21:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 kkhkbb 于 2018-5-4 18:54 編輯

一、 概述
1、 文件系統(tǒng)簡介:
(1)文件系統(tǒng):管理和存儲文件信息的軟件機構(gòu)。
(2)常用的文件系統(tǒng):
  •      FAT/FATFS。
  •      NTFS基于安全性的文件系統(tǒng),是Wundow NT采用的獨特的文件系統(tǒng)結(jié)構(gòu)
  •      CDFSCDFS是大部分光盤的文件系統(tǒng)。
2、 FATFS文件系統(tǒng)簡介:
      FATFS是一個完全免費開源的FAT文件系統(tǒng)模塊,專門為小型的嵌入式系統(tǒng)而設(shè)計,完全用標準C語言編寫,具有良好的硬件平臺獨立性,可移植到8051、PIC、ARM等系列單片機上而只需做簡單的修改。它支持FAT12、FAT16、FATI32,支持多個存儲媒介;有獨立的緩沖區(qū),可以對多個文件進行讀/寫,并特別對8位單片機和16位單片機做了優(yōu)化。
3、 FATFS文件系統(tǒng)特點:
  •      WindowFAT文件系統(tǒng)(支持FAT12/FAT16/FAT32
  •      代碼量少、效率高。
  •      與平臺無關(guān)、移植簡單全部通過C語言編寫。
  •      多配置項:支持多卷(物理驅(qū)動器或區(qū),最10卷)、多個ANSI/OEM代碼頁、支持長文件名、支持RTOS、支持多種區(qū)大小等。
4、 文件系統(tǒng)主要文件介紹:
文件名
功能
說明
ffconf.h
FATFS模塊配置文件
需要根據(jù)需求來配置參數(shù)
ff.h
FATFS和應(yīng)用模塊公用的包含文件
不需要修改
ff.c
FATFS模塊源碼
不需要修改
diskio.h
FATFS和disk I/O模塊公用的包含文件
不需要修改
diskio.c
FATFS和disk I/O模塊接口層文件
與平臺相關(guān)的代碼,需要用戶根據(jù)存儲介質(zhì)來編寫函數(shù)
interger.h
數(shù)據(jù)類型定義
與編譯器有關(guān)

二、 硬件電路


          圖14_0 原理圖芯片引角連接


           圖14_1 原理圖TF卡座引角連接

三、 實驗原理
       STM32F407上帶有SDIO控制器,iCore3核心板上將SDIO連接到TF卡座上。本實驗將Micro SD卡插入TF卡座上即可。通過FATFS創(chuàng)建test.txt文件,并且寫入數(shù)據(jù)0-511,然后讀出并打印到終端上。硬件連接示意圖如下:
             圖14_2 工作原理示意圖

四、 源代碼

主函數(shù)

  1. <font color="#444444"><font face="Tahoma">/*
  2. * --------------------
  3. * Company             : LUOYANG GINGKO TECHNOLOGY CO.,LTD.
  4.                                : 洛陽銀杏科技有限公司
  5. * --------------------
  6. * Project Name        : iCore3 fatfs_sd
  7. * Description            : iCore3 fatfs_sd
  8. * --------------------
  9. * Tool Versions        : uVision V5.17.0.0
  10. * Target Device       : STM32F407IGT6
  11. * --------------------
  12. * Engineer            : ysloveivy.
  13. * Revision            : 0.01
  14. * Created Date        : 2015.12.02
  15. * --------------------
  16. * Engineer            :
  17. * Revision            :
  18. * Modified Date       :
  19. * --------------------
  20. * Additional Comments :
  21. *
  22. * --------------------
  23. */
  24. //--------------------------- Include ---------------------------//
  25. #include "..\include\led.h"
  26. #include "..\include\main.h"
  27. #include "..\include\usart.h"
  28. #include "..\fatfs\ff.h"
  29. #include "..\fatfs\diskio.h"
  30. #include "..\include\stm324xg_eval_sdio_sd.h"
  31. #include "..\fwlib\inc\stm32f4xx_gpio.h"

  32. #include <ctype.h>
  33. #include <string.h>
  34. #include <stdlib.h>
  35. #include <stdio.h>

  36. //---------------------------- Define ---------------------------//

  37. //-------------------------- Variable ---------------------------//

  38. //--------------------- Function Prototype ----------------------//

  39. //--------------------------- Function --------------------------//
  40. /*
  41. * Name                                        : main
  42. * Description        : ---
  43. * Author                                : ysloveivy.
  44. *
  45. * History
  46. * --------------------
  47. * Rev                                        : 0.00
  48. * Date                                        : 12/02/2015
  49. *
  50. * create.
  51. * --------------------
  52. */
  53. int main(void)
  54. {
  55.         int i,j;
  56.         FIL file;                                           //文件對象
  57.         FATFS fatfs;                                   //邏輯驅(qū)動器的工作區(qū)
  58.         static FRESULT res;                             //FRESULT函數(shù)公共結(jié)果代碼
  59.         unsigned char write_buffer[512];                 //寫文件緩沖區(qū)
  60.         unsigned char read_buffer[512];                  //讀文件緩沖區(qū)
  61.         unsigned int counter;

  62.         led.initialize();
  63.         usart4.initialize(115200);

  64.         usart4.printf("\x0c");                                 
  65.         usart4.printf("\033[1;32;40m");                          
  66.         usart4.printf("\r\n\r\nhello! I am iCore3!\r\n\r\n\r\n");


  67.         //判斷SD卡是否初始化
  68.         if(SD_Init() != 0){
  69.                 usart4.printf("SD ERROR!\r\n");
  70.                 while(1){
  71.                         for(i = 0;i < 10000000;i++);
  72.                         LED_RED_ON;
  73.                         for(i = 0;i < 10000000;i++);
  74.                         LED_RED_OFF;
  75.                 }
  76.         }else{
  77.                 usart4.printf("SD Initialize successful!\r\n");
  78.         }

  79.         for(i = 0;i < 1000000;i++);
  80.         res = f_mount(&fatfs,"0:",1);                                   //掛載SD卡
  81.         if(res != RES_OK){
  82.                 usart4.printf("f_mount error!\r\n");
  83.                 while(1){
  84.                         for(i = 0;i < 10000000;i++);
  85.                         LED_RED_ON;
  86.                         for(i = 0;i < 10000000;i++);
  87.                         LED_RED_OFF;
  88.                 }
  89.         }else{
  90.                 usart4.printf("f_mount successful!\r\n");
  91.         }
  92.         res = f_open(&file,"0:/test.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);   
  93. //打開驅(qū)動器0上的源文件

  94.         if(res != RES_OK){
  95.                 usart4.printf("f_open error!\r\n");
  96.                 while(1){
  97.                         for(i = 0;i < 10000000;i++);
  98.                         LED_RED_ON;
  99.                         for(i = 0;i < 10000000;i++);
  100.                         LED_RED_OFF;
  101.                 }
  102.         }else{
  103.                 usart4.printf("f_open successful!\r\n");
  104.         }

  105.         res = f_lseek(&file,0);                                 //移動寫指針到文件首
  106.         if(res != RES_OK){
  107.                 usart4.printf("f_lseek error!\r\n");
  108.                 while(1){
  109.                         for(i = 0;i < 10000000;i++);
  110.                         LED_RED_ON;
  111.                         for(i = 0;i < 10000000;i++);
  112.                         LED_RED_OFF;
  113.                 }
  114.         }else{
  115.                 usart4.printf("f_lseek successful!\r\n");
  116.         }

  117.         for(i = 0;i < 512;i++){
  118.                 write_buffer[i] = i % 256;
  119.         }
  120.         res = f_write(&file,write_buffer,512,&counter);     //將緩沖器中的內(nèi)容寫入源文件
  121.         if(res != RES_OK || counter != 512){
  122.                 usart4.printf("f_write error!\r\n");
  123.                 while(1){
  124.                         for(i = 0;i < 10000000;i++);
  125.                         LED_RED_ON;
  126.                         for(i = 0;i < 10000000;i++);
  127.                         LED_RED_OFF;
  128.                 }
  129.         }else{
  130.                 usart4.printf("f_write successful!\r\n");
  131.         }

  132.         res = f_lseek(&file,0);                              //移動讀指針到文件首
  133.         if(res != RES_OK){
  134.                 usart4.printf("f_lseek error!\r\n");
  135.                 while(1){
  136.                         for(i = 0;i < 10000000;i++);
  137.                         LED_RED_ON;
  138.                         for(i = 0;i < 10000000;i++);
  139.                         LED_RED_OFF;
  140.                 }
  141.         }else{
  142.                 usart4.printf("f_lseek successful!\r\n");
  143.         }

  144.         res = f_read(&file,read_buffer,512,&counter);
  145.         if(res != RES_OK || counter != 512){
  146.                 usart4.printf("f_read error!\r\n");
  147.                 while(1){
  148.                         for(i = 0;i < 10000000;i++);
  149.                         LED_RED_ON;
  150.                         for(i = 0;i < 10000000;i++);
  151.                         LED_RED_OFF;
  152.                 }
  153.         }else{
  154.                 usart4.printf("f_read successful!\r\n");
  155.         }
  156.         f_close(&file);                                  //關(guān)閉源文件

  157.         usart4.printf("read data:\r\n");
  158.         for(i = 0;i < 32;i++){
  159.                 for(j = 0; j < 16; j ++)
  160.                         usart4.printf(" %02X",read_buffer[i*16+j]);
  161.                         usart4.printf("\r\n");
  162.         }


  163.         while(1){
  164.                         for(i = 0;i < 10000000;i++);
  165.                         LED_GREEN_ON;
  166.                         for(i = 0;i < 10000000;i++);
  167.                         LED_GREEN_OFF;
  168.         }</font></font>
復(fù)制代碼
五、 實驗步驟
1. 把仿真器與iCore3的SWD調(diào)試口相連(直接相連或者通過轉(zhuǎn)接器相連);
2. 把iCore3通過Micro USB線與計算機相連,為iCore3供電;
3. 打開PuTTY串口終端(注PuTTY使用方法見附錄);
4. 打開Keil MDK開發(fā)環(huán)境,并打開本實驗工程;
5. 燒寫程序到iCore3上;
6. 也可以進入Debug模式,單步運行或設(shè)置斷點驗證程序邏輯。
六、 實驗現(xiàn)象
在終端顯示屏上可以看到FATFS操作的信息,如下圖:
              圖14_3  實驗現(xiàn)象圖
七、 資料及代碼包下載
鏈接:http://pan.baidu.com/s/1eRHeR9S 密碼:go0n
附錄:
1、iCore3供電后,打開計算機----屬性----設(shè)備管理器----端口。
         圖14_4  COM口查看示意圖
2、打開PuTTY。
        圖14_5 PuTTY軟件設(shè)置示意圖
3、此時就可以燒寫程序進行驗證了。



iCore3_14_FATFS.zip

1.75 MB, 下載次數(shù): 11, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:143203 發(fā)表于 2018-7-20 09:50 | 只看該作者
請問這個移植過程是怎么樣的?外接SD卡是不是固定引腳
回復(fù)

使用道具 舉報

板凳
ID:375810 發(fā)表于 2018-7-20 13:56 | 只看該作者
學(xué)習(xí)學(xué)習(xí)學(xué)習(xí)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文精品久久 | 日韩在线免费 | 免费看淫片 | 国产精品久久久久久久久久东京 | 久久久久久毛片免费观看 | 欧美aaaaaa| 久久久亚洲一区 | 久久99视频免费观看 | 欧美一级黄色片免费观看 | 男女爱爱福利视频 | 欧美一级免费观看 | 久久成人精品 | 亚洲精品在线免费 | 国产精品一区二区视频 | 欧美日韩a | 成人免费视频观看视频 | 国产精品久久久久久久久久妞妞 | 国产精品久久久久久影院8一贰佰 | 97超碰在线播放 | 污污的网站在线观看 | 欧美日韩精品免费 | 美女在线观看国产 | 91高清视频在线观看 | 少妇性l交大片免费一 | 亚洲精品欧美一区二区三区 | 亚洲福利一区 | 国产成人免费 | 青青久视频 | 天天色官网 | 亚洲第一视频 | 久久99蜜桃综合影院免费观看 | 日韩av一区二区在线观看 | 国产精品一区二区三区免费观看 | 九九热在线视频 | 波霸ol一区二区 | 九九久久精品视频 | 国产97在线视频 | 国产精品高潮呻吟久久 | 亚洲成网站 | 成人在线视频免费播放 | 久久日韩精品 |