步驟:(1)從ST官網下載stm32F4例程(自帶有USOIII3.04)。 (3)根據芯片手冊修改部分底層BSP。
(4)添加任務,配置任務參數(優先級、堆棧等)。
(5)書寫主函數。
(6)編譯,串口調試。
單片機源程序如下:
- #include"myfatapp.h"
- /****************************************************************************
- * Function Name : FATFS_GetFree
- * Description : 讀取總磁盤大小和空閑磁盤大小
- * Input : drv:磁盤編號
- * * total:保存讀取到的總磁盤大小
- * * free:保存讀取到的空閑磁盤大小
- * Output : None
- * Return : res:讀取狀態。0:成功;其他則是其他相應的錯誤信息。
- ****************************************************************************/
- uint8_t FATFS_GetFree(uint8_t *drv, uint32_t *total, uint32_t *free)
- {
- FATFS *fs1;
- u8 res;
- DWORD fre_clust=0, fre_sect=0, tot_sect=0;
- /* 得到磁盤信息及空閑簇數量 */
- res = f_getfree((const TCHAR*)drv, &fre_clust, &fs1);
- if(res == 0) //表示讀取成功
- {
- tot_sect = (fs1->n_fatent-2) * fs1->csize; //得到總扇區數
- fre_sect = fre_clust * fs1->csize; //得到空閑扇區數
-
- #if _MAX_SS!=512 //扇區大小不是512字節,則轉換為512字節
- tot_sect *= fs1->ssize/512;
- fre_sect *= fs1->ssize/512;
- #endif
- *total = tot_sect >> 1; //單位為KB
- *free = fre_sect >> 1; //單位為KB
- }
- return res;
- }
- /****************************************************************************
- * Function Name : FATFS_ScanFiles
- * Description : 讀取指定文件下所有文件的名字和后綴
- * Input : dir:掃描的文件路徑
- * * file:用來存放所有文件的名字和后綴的地址
- * Output : None
- * Return : res:返回讀取的狀態
- ****************************************************************************/
- uint8_t FATFS_ScanFiles(uint8_t *dir, FileNameTypeDef *file)
- {
- FRESULT res;
- FILINFO fileInfo;
- DIR dirs;
- char *fn, i = 0;
- #if _USE_LFN
- static char lfn[_MAX_LFN + 1]; /* Buffer to store the LFN */
- fileInfo.lfname = lfn;
- fileInfo.lfsize = sizeof(lfn);
- #endif
- /* 打開文件夾 */
- res = f_opendir(&dirs, (const TCHAR*)dir);
-
- if (res == FR_OK) //成功打開文件夾
- {
- while (f_readdir(&dirs, &fileInfo) == FR_OK) //按照順序讀文件夾
- {
- if(!fileInfo.fname[0]) //如果文件名為0,結束
- {
- break;
- }
-
- /* 判斷文件屬性 */
- if((fileInfo.fattrib == AM_ARC)|(fileInfo.fattrib == AM_DIR))
- {
- #if _USE_LFN //為長字符串名準備
- fn = *fileInfo.lfname ? fileInfo.lfname : fileInfo.fname;
- #else
- fn = fileInfo.fname;
- #endif
- /* 讀取名字 */
- i = 0;
- while((*fn != '.') && (*fn != '\0')) //有一個成立就跳出循環
- {
- file->name[i] = *fn;
- i++;
- fn++;
- }
- /* 讀取后綴 */
- i = 0;
- while(*fn != '\0')
- {
- file->type[i] = *fn;
- i++;
- fn++;
- }
- file++;
- }//end of 文件屬性判斷呢
- } //end of while (f_readdir(&dirs, &fileInfo) == FR_OK)//按照順序讀文件夾
- }
- return res;
- }
復制代碼
所有資料51hei提供下載:
FATS.rar
(3.08 MB, 下載次數: 63)
2018-12-10 22:44 上傳
點擊文件名下載附件
|