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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3510|回復: 3
收起左側

移植UCOSIII和FATS到IAR工程,芯片STM32F407,最終可以在串口打印寫入SD卡文件

[復制鏈接]
ID:443686 發表于 2018-12-10 22:22 | 顯示全部樓層 |閱讀模式
步驟:(1)從ST官網下載stm32F4例程(自帶有USOIII3.04)。           (3)根據芯片手冊修改部分底層BSP。
            (4)添加任務,配置任務參數(優先級、堆棧等)。
             (5)書寫主函數。
             (6)編譯,串口調試。
0.png

單片機源程序如下:
  1. #include"myfatapp.h"

  2. /****************************************************************************
  3. * Function Name  : FATFS_GetFree
  4. * Description    : 讀取總磁盤大小和空閑磁盤大小
  5. * Input          : drv:磁盤編號
  6. *                * total:保存讀取到的總磁盤大小
  7. *                * free:保存讀取到的空閑磁盤大小
  8. * Output         : None
  9. * Return         : res:讀取狀態。0:成功;其他則是其他相應的錯誤信息。
  10. ****************************************************************************/

  11. uint8_t FATFS_GetFree(uint8_t *drv, uint32_t *total, uint32_t *free)
  12. {
  13.         FATFS *fs1;
  14.         u8 res;
  15.     DWORD fre_clust=0, fre_sect=0, tot_sect=0;

  16.     /* 得到磁盤信息及空閑簇數量 */
  17.     res = f_getfree((const TCHAR*)drv, &fre_clust, &fs1);

  18.     if(res == 0)  //表示讀取成功
  19.         {                                                                                          
  20.             tot_sect = (fs1->n_fatent-2) * fs1->csize;        //得到總扇區數
  21.             fre_sect = fre_clust * fs1->csize;                        //得到空閑扇區數
  22.                            
  23. #if _MAX_SS!=512                        //扇區大小不是512字節,則轉換為512字節
  24.                 tot_sect *= fs1->ssize/512;
  25.                 fre_sect *= fs1->ssize/512;
  26. #endif         

  27.                 *total = tot_sect >> 1;        //單位為KB
  28.                 *free = fre_sect >> 1;        //單位為KB
  29.         }

  30.         return res;        
  31. }

  32. /****************************************************************************
  33. * Function Name  : FATFS_ScanFiles
  34. * Description    : 讀取指定文件下所有文件的名字和后綴
  35. * Input          : dir:掃描的文件路徑
  36. *                * file:用來存放所有文件的名字和后綴的地址
  37. * Output         : None
  38. * Return         : res:返回讀取的狀態
  39. ****************************************************************************/

  40. uint8_t FATFS_ScanFiles(uint8_t *dir, FileNameTypeDef *file)
  41. {
  42.         FRESULT res;
  43.         FILINFO  fileInfo;
  44.         DIR dirs;
  45.         char *fn, i = 0;

  46. #if _USE_LFN
  47.     static char lfn[_MAX_LFN + 1];   /* Buffer to store the LFN */
  48.     fileInfo.lfname = lfn;
  49.     fileInfo.lfsize = sizeof(lfn);
  50. #endif
  51.         /* 打開文件夾 */
  52.         res = f_opendir(&dirs, (const TCHAR*)dir);
  53.         
  54.         if (res == FR_OK)    //成功打開文件夾
  55.         {   
  56.                 while (f_readdir(&dirs, &fileInfo) == FR_OK)   //按照順序讀文件夾
  57.                 {         
  58.                         if(!fileInfo.fname[0])           //如果文件名為0,結束
  59.                         {
  60.                                 break;     
  61.                         }         
  62.                         
  63.                         /* 判斷文件屬性 */                                                               
  64.                         if((fileInfo.fattrib == AM_ARC)|(fileInfo.fattrib == AM_DIR))
  65.                         {

  66. #if _USE_LFN        //為長字符串名準備
  67.                     fn = *fileInfo.lfname ? fileInfo.lfname : fileInfo.fname;
  68. #else
  69.                             fn = fileInfo.fname;
  70. #endif

  71.                                 /* 讀取名字 */
  72.                                 i = 0;
  73.                                while((*fn != '.') && (*fn != '\0')) //有一個成立就跳出循環
  74.                                 {
  75.                                         file->name[i] = *fn;
  76.                                         i++;
  77.                                         fn++;        
  78.                                 }

  79.                                 /* 讀取后綴 */
  80.                                 i = 0;
  81.                                 while(*fn != '\0')
  82.                                 {
  83.                                         file->type[i] = *fn;
  84.                                         i++;
  85.                                         fn++;
  86.                                 }
  87.                                 file++;
  88.                         }//end of 文件屬性判斷呢
  89.                 } //end of while (f_readdir(&dirs, &fileInfo) == FR_OK)//按照順序讀文件夾
  90.         }
  91.         return res;
  92. }
復制代碼

所有資料51hei提供下載:
FATS.rar (3.08 MB, 下載次數: 63)
回復

使用道具 舉報

ID:355227 發表于 2019-4-8 22:36 | 顯示全部樓層
很棒的范例 謝謝
回復

使用道具 舉報

ID:229137 發表于 2022-7-5 09:58 | 顯示全部樓層
正在尋找,fats版本是0.8的
回復

使用道具 舉報

ID:340817 發表于 2023-3-23 18:59 | 顯示全部樓層
很棒的范例 謝謝
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产视频福利在线观看 | 国产一级在线观看 | 国产欧美一区二区三区日本久久久 | 久久精品国产99国产 | av资源中文在线天堂 | 亚洲精品一 | 久久久久国色av免费观看性色 | 男女网站免费观看 | 激情av网站 | 日韩中文字幕在线观看 | www久久久| 成人三级在线观看 | 自拍偷拍中文字幕 | 国产精品美女久久久久久免费 | 欧美精品一区在线发布 | 国产区一区| 国产精品美女久久久久久免费 | caoporon| 日本成人片在线观看 | 男女啪啪高潮无遮挡免费动态 | 国产精品福利久久久 | 亚洲成人99 | 九一视频在线观看 | 一区二区三区国产好 | 日本特黄a级高清免费大片 特黄色一级毛片 | 91在线精品视频 | 欧美日韩国产免费 | 欧美国产一区二区三区 | 亚洲成人在线免费 | 国产精品777一区二区 | 精品国产伦一区二区三区观看方式 | 日韩欧美国产一区二区三区 | 免费一区 | 国产高清美女一级a毛片久久w | 午夜爽爽男女免费观看hd | 毛片a级毛片免费播放100 | 午夜精品久久久久久久久久久久久 | 亚洲综合日韩精品欧美综合区 | 免费观看黄a一级视频 | 国产精品av久久久久久久久久 | 亚洲一区二区三区久久久 |