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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2941|回復: 0
打印 上一主題 下一主題
收起左側

STM32 SPI基于串行Flash的FatFS文件系統 硬石代碼,很實用

[復制鏈接]
跳轉到指定樓層
樓主
ID:866526 發表于 2020-12-23 19:03 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. /* 包含頭文件 ----------------------------------------------------------------*/
  2. #include "stm32f10x.h"
  3. #include "bsp/usart/bsp_debug_usart.h"
  4. #include "bsp/spi_flash/bsp_spi_flash.h"
  5. #include "ff.h"

  6. /* 私有類型定義 --------------------------------------------------------------*/
  7. /* 私有宏定義 ----------------------------------------------------------------*/
  8. /* 獲取緩沖區的長度 */
  9. /* 私有變量 ------------------------------------------------------------------*/
  10. FATFS fs;                                                                                                        /* FatFs文件系統對象 */
  11. FIL file;                                                                                                        /* 文件對象 */
  12. FRESULT f_res;                    /* 文件操作結果 */
  13. UINT fnum;                                                      /* 文件成功讀寫數量 */
  14. BYTE ReadBuffer[1024]={0};        /* 讀緩沖區 */
  15. BYTE WriteBuffer[] =              /* 寫緩沖區*/
  16. "歡迎使用硬石STM32開發板 今天是個好日子,新建文件系統測試文件\n";  

  17. /* 擴展變量 ------------------------------------------------------------------*/
  18. /* 私有函數原形 --------------------------------------------------------------*/
  19. static void printf_fatfs_error(FRESULT fresult);
  20. /* 函數體 --------------------------------------------------------------------*/

  21. /**
  22.   * 函數功能: 主函數.
  23.   * 輸入參數: 無
  24.   * 返 回 值: 無
  25.   * 說    明: 無
  26.   */
  27. int main(void)
  28. {   
  29.   /* 調試串口初始化配置,115200-N-8-1.使能串口發送和接受 */
  30.   DEBUG_USART_Init();   
  31.   printf("****** 這是一個基于串行FLASH的FatFS文件系統實驗 ******\n");
  32.   
  33.         //在串行Flash掛載文件系統,文件系統掛載時會對SPI設備初始化
  34.         f_res = f_mount(&fs,"1:",1);  
  35.         printf_fatfs_error(f_res);
  36. /*----------------------- 格式化測試 ---------------------------*/  
  37.         /* 如果沒有文件系統就格式化創建創建文件系統 */
  38.         if(f_res == FR_NO_FILESYSTEM)
  39.         {
  40.                 printf("》FLASH還沒有文件系統,即將進行格式化...\n");
  41.     /* 格式化 */
  42.                 f_res=f_mkfs("1:",0,0);                                                       
  43.                
  44.                 if(f_res == FR_OK)
  45.                 {
  46.                         printf("》FLASH已成功格式化文件系統。\n");
  47.       /* 格式化后,先取消掛載 */
  48.                         f_res = f_mount(NULL,"1:",1);                       
  49.       /* 重新掛載        */                       
  50.                         f_res = f_mount(&fs,"1:",1);
  51.                 }
  52.                 else
  53.                 {
  54.                         printf("《《格式化失敗。》》\n");
  55.                         while(1);
  56.                 }
  57.         }
  58.   else if(f_res!=FR_OK)
  59.   {
  60.     printf("!!外部Flash掛載文件系統失敗。(%d)\n",f_res);
  61.     printf("!!可能原因:SPI Flash初始化不成功。\n");
  62.                 while(1);
  63.   }
  64.   else
  65.   {
  66.     printf("》文件系統掛載成功,可以進行讀寫測試\n");
  67.   }
  68.   
  69. /*----------------------- 文件系統測試:寫測試 -----------------------------*/
  70.         /* 打開文件,如果文件不存在則創建它 */
  71.         printf("****** 即將進行文件寫入測試... ******\n");       
  72.         f_res = f_open(&file, "1:FatFs讀寫測試文件.txt",FA_CREATE_ALWAYS | FA_WRITE );
  73.         if ( f_res == FR_OK )
  74.         {
  75.                 printf("》打開/創建FatFs讀寫測試文件.txt文件成功,向文件寫入數據。\n");
  76.     /* 將指定存儲區內容寫入到文件內 */
  77.                 f_res=f_write(&file,WriteBuffer,sizeof(WriteBuffer),&fnum);
  78.     if(f_res==FR_OK)
  79.     {
  80.       printf("》文件寫入成功,寫入字節數據:%d\n",fnum);
  81.       printf("》向文件寫入的數據為:\n%s\n",WriteBuffer);
  82.     }
  83.     else
  84.     {
  85.       printf("!!文件寫入失敗:(%d)\n",f_res);
  86.     }   
  87.                 /* 不再讀寫,關閉文件 */
  88.     f_close(&file);
  89.         }
  90.         else
  91.         {       
  92.                 printf("!!打開/創建文件失敗。\n");
  93.         }
  94.        
  95. /*------------------- 文件系統測試:讀測試 ------------------------------------*/
  96.         printf("****** 即將進行文件讀取測試... ******\n");
  97.         f_res = f_open(&file, "1:FatFs讀寫測試文件.txt", FA_OPEN_EXISTING | FA_READ);          
  98.         if(f_res == FR_OK)
  99.         {
  100.                 printf("》打開文件成功。\n");
  101.                 f_res = f_read(&file, ReadBuffer, sizeof(ReadBuffer), &fnum);
  102.     if(f_res==FR_OK)
  103.     {
  104.       printf("》文件讀取成功,讀到字節數據:%d\n",fnum);
  105.       printf("》讀取得的文件數據為:\n%s \n", ReadBuffer);       
  106.     }
  107.     else
  108.     {
  109.       printf("!!文件讀取失敗:(%d)\n",f_res);
  110.     }               
  111.         }
  112.         else
  113.         {
  114.                 printf("!!打開文件失敗。\n");
  115.         }
  116.         /* 不再讀寫,關閉文件 */
  117.         f_close(&file);       
  118.   
  119.         /* 不再使用文件系統,取消掛載文件系統 */
  120.         f_mount(NULL,"1:",1);
  121.   
  122.   /* 無限循環 */
  123.   while (1)
  124.   {   
  125.   }
  126. }

  127. /**
  128.   * 函數功能: FatFS文件系統操作結果信息處理.
  129.   * 輸入參數: FatFS文件系統操作結果:FRESULT
  130.   * 返 回 值: 無
  131.   * 說    明: 無
  132.   */
  133. static void printf_fatfs_error(FRESULT fresult)
  134. {
  135.   switch(fresult)
  136.   {
  137.     case FR_OK:                   //(0)
  138.       printf("》操作成功。\n");
  139.     break;
  140.     case FR_DISK_ERR:             //(1)
  141.       printf("!!硬件輸入輸出驅動出錯。\n");
  142.     break;
  143.     case FR_INT_ERR:              //(2)
  144.       printf("!!斷言錯誤。\n");
  145.     break;
  146.     case FR_NOT_READY:            //(3)
  147.       printf("!!物理設備無法工作。\n");
  148.     break;
  149.     case FR_NO_FILE:              //(4)
  150.       printf("!!無法找到文件。\n");
  151.     break;
  152.     case FR_NO_PATH:              //(5)
  153.       printf("!!無法找到路徑。\n");
  154.     break;
  155.     case FR_INVALID_NAME:         //(6)
  156.       printf("!!無效的路徑名。\n");
  157.     break;
  158.     case FR_DENIED:               //(7)
  159.     case FR_EXIST:                //(8)
  160.       printf("!!拒絕訪問。\n");
  161.     break;
  162.     case FR_INVALID_OBJECT:       //(9)
  163.       printf("!!無效的文件或路徑。\n");
  164.     break;
  165.     case FR_WRITE_PROTECTED:      //(10)
  166.       printf("!!邏輯設備寫保護。\n");
  167.     break;
  168.     case FR_INVALID_DRIVE:        //(11)
  169.       printf("!!無效的邏輯設備。\n");
  170.     break;
  171.     case FR_NOT_ENABLED:          //(12)
  172.       printf("!!無效的工作區。\n");
  173.     break;
  174.     case FR_NO_FILESYSTEM:        //(13)
  175.       printf("!!無效的文件系統。\n");
  176.     break;
  177.     case FR_MKFS_ABORTED:         //(14)
  178.       printf("!!因函數參數問題導致f_mkfs函數操作失敗。\n");
  179.     break;
  180.     case FR_TIMEOUT:              //(15)
  181.       printf("!!操作超時。\n");
  182.     break;
  183.     case FR_LOCKED:               //(16)
  184.       printf("!!文件被保護。\n");
  185.     break;
  186.     case FR_NOT_ENOUGH_CORE:      //(17)
  187.       printf("!!長文件名支持獲取堆空間失敗。\n");
  188.     break;
  189.     case FR_TOO_MANY_OPEN_FILES:  //(18)
  190.       printf("!!打開太多文件。\n");
  191.     break;
  192.     case FR_INVALID_PARAMETER:    // (19)
  193.       printf("!!參數無效。\n");
  194.     break;
  195.   }
  196. }
  197. /******************* (C) COPYRIGHT 2015-2020 硬石嵌入式開發團隊 *****END OF FILE****/
復制代碼


YSF1-047. SPI-基于串行Flash的FatFS文件系統.7z

1.32 MB, 下載次數: 62, 下載積分: 黑幣 -5

基于串行Flash的FatFS文件系統

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩伦理一区二区 | 欧美三级视频 | 欧美日韩专区 | 国产日韩欧美精品一区二区 | 亚洲成人蜜桃 | 欧美日韩黄色一级片 | 欧美激情一区二区 | 欧美精品一二三 | 羞羞涩涩在线观看 | 精品久久久久久久久久久 | 一区二区三区不卡视频 | 久久久久国产精品一区二区 | 亚洲一区二区三区免费视频 | 天天操天天射天天舔 | 亚洲成人午夜在线 | 国产欧美一区二区三区日本久久久 | 韩日在线 | www.97国产 | 国产精品免费看 | 日本精品视频 | 亚洲欧美日韩久久久 | 国产sm主人调教女m视频 | 国产精品色 | 欧美激情精品久久久久 | 久久综合久| 亚洲视频一区在线观看 | 亚洲资源站 | 国产三级 | 国产精品成人一区二区三区夜夜夜 | 99热在线播放 | 国产亚洲一区二区三区在线 | 久久久久亚洲精品 | 国产aⅴ| 草草影院ccyy | 高清成人免费视频 | 九九爱这里只有精品 | 91亚洲免费 | 91中文字幕在线观看 | 亚洲精品久久久久久久久久久久久 | 少妇黄色 | 欧美日韩在线一区二区三区 |