⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 _fs_ffind.c

📁 keil arm flash fs 最新版 在Keil arm下使用
💻 C
字号:
/*----------------------------------------------------------------------------
 *      R T L  -  F l a s h   F i l e   S y s t e m
 *----------------------------------------------------------------------------
 *      Name:    _FS_FFIND.C 
 *      Purpose: Low level File Find Function
 *      Rev.:    V3.22
 *----------------------------------------------------------------------------
 *      This code is part of the RealView Run-Time Library.
 *      Copyright (c) 2004-2008 KEIL - An ARM Company. All rights reserved.
 *---------------------------------------------------------------------------*/

#include "File_Config.h"

/*--------------------------- _ffind ----------------------------------------*/

BOOL _ffind (FINFO *info, IOB *fcb) {
   /* Low level file find function. Searches for the file with next file ID. */
   FALLOC fa;
   U32 bl,adr,fid,prev,name = 0;

   fid = 0xFFFF;
   for (bl = 0; bl < fcb->NumSect; bl++) {
      /* Search all allocated File Blocks for file with next fileID */
      adr = fs_adr_sig (bl, fcb);
      adr = fs_rd_sig (adr, &fa.end);
      if (fa.end != fcb->InitVal) {
         for (prev = 0; ; prev = fa.end) {
            adr = fs_rd_alloc (adr, &fa);
            if (fa.fileID < fid && fa.fileID > (info->fileID | 0x8000)) {
               fid  = fa.fileID;
               name = ((DEVCONF *)fcb->DevCfg)[bl].bStart + prev;
            }
            if (fa.end == fcb->InitVal) break;
         }
      }
   }
   if (fid != 0xFFFF) {
      /* Filename is stored 4-byte aligned. */
      name = (name + 3) & ~3;
      /* Copy name to buffer. */
      if (fcb->drive == DRV_SPI) {
         fs_spi_ReadData (name, 32, (U8 *)&info->name);
      }
      else {
         fs_ReadData (name, 32, (U8 *)&info->name);
      }
      info->fileID = fid & 0x7FFF;
      /* Currently Embedded Files do not support Time information. */
      info->time.hr  = 12;
      info->time.min = 0;
      info->time.sec = 0;
      info->time.day = 1;
      info->time.mon = 1;
      info->time.year= 1980;
      return (__TRUE);
   }
   return (__FALSE);
}

/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -