亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? ff.c

?? 最新的LPC214X FATFS驅(qū)動(dòng)程序
?? C
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
////  $Id: ff.c 42 2008-10-04 18:40:36Z jcw $//  $Revision: 42 $//  $Author: jcw $//  $Date: 2008-10-04 14:40:36 -0400 (Sat, 04 Oct 2008) $//  $HeadURL: http://tinymicros.com/svn_public/arm/lpc2148_demo/trunk/fatfs/ff.c $///*--------------------------------------------------------------------------/  /  FatFs - FAT file system module  R0.04b                    (C)ChaN, 2007  /---------------------------------------------------------------------------/  / The FatFs module is an experimenal project to implement FAT file system to  / cheap microcontrollers. This is a free software and is opened for education,  / research and development under license policy of following trems.  /  /  Copyright (C) 2007, ChaN, all right reserved.  /  / * The FatFs module is a free software and there is no warranty.  / * You can use, modify and/or redistribute it for personal, non-profit or  /   profit use without any restriction under your responsibility.  / * Redistributions of source code must retain the above copyright notice.  /  /---------------------------------------------------------------------------/  /  Feb 26, 2006  R0.00  Prototype.  /  Apr 29, 2006  R0.01  First stable version.  /  Jun 01, 2006  R0.02  Added FAT12 support.  /                       Removed unbuffered mode.  /                       Fixed a problem on small (<32M) patition.  /  Jun 10, 2006  R0.02a Added a configuration option (_FS_MINIMUM).  /  Sep 22, 2006  R0.03  Added f_rename().  /                       Changed option _FS_MINIMUM to _FS_MINIMIZE.  /  Dec 11, 2006  R0.03a Improved cluster scan algolithm to write files fast.  /                       Fixed f_mkdir() creates incorrect directory on FAT32.  /  Feb 04, 2007  R0.04  Supported multiple drive system.  /                       Changed some interfaces for multiple drive system.  /                       Changed f_mountdrv() to f_mount().  /                       Added f_mkfs().  /  Apr 01, 2007  R0.04a Supported multiple partitions on a plysical drive.  /                       Added a capability of extending file size to f_lseek().  /                       Added minimization level 3.  /                       Fixed an endian sensitive code in f_mkfs().  /  May 05, 2007  R0.04b Added a configuration option _USE_NTFLAG.  /                       Added FSInfo support.  /                       Fixed DBCS name can result FR_INVALID_NAME.  /                       Fixed short seek (<= csize) collapses the file object.  /---------------------------------------------------------------------------*/#include <stdio.h> // ####include <string.h>#include "ff.h"     /* FatFs declarations */#include "disk.h"   /* Include file for user provided disk functions *//*--------------------------------------------------------------------------  Module Private Functions  ---------------------------------------------------------------------------*/static FATFS *FatFs [_DRIVES]; /* Pointer to the file system objects (logical drives) */static U16 fsid;        /* File system mount ID *//*-----------------------------------------------------------------------*//* Change window offset                                                  *//*-----------------------------------------------------------------------*/staticBOOL move_window (    /* TRUE: successful, FALSE: failed */    FATFS *fs,      /* File system object */    U32 sector    /* Sector number to make apperance in the fs->win[] */    )           /* Move to zero only writes back dirty window */{  U32 wsect;  wsect = fs->winsect;  if (wsect != sector) {  /* Changed current window */#if _FS_READONLY == 0    U8 n;    if (fs->winflag) {  /* Write back dirty window if needed */      if (diskWrite(fs->drive, fs->win, wsect, 1) != DRESULT_OK)        return FALSE;      fs->winflag = 0;      if (wsect < (fs->fatbase + fs->sects_fat)) {  /* In FAT area */        for (n = fs->n_fats; n >= 2; n--) { /* Refrect the change to FAT copy */          wsect += fs->sects_fat;          diskWrite(fs->drive, fs->win, wsect, 1);        }      }    }#endif    if (sector) {      if (diskRead(fs->drive, fs->win, sector, 1) != DRESULT_OK)        return FALSE;      fs->winsect = sector;    }  }  return TRUE;}/*-----------------------------------------------------------------------*//* Clean-up cached data                                                  *//*-----------------------------------------------------------------------*/#if _FS_READONLY == 0staticFRESULT sync (      /* FR_OK: successful, FR_RW_ERROR: failed */    FATFS *fs     /* File system object */    ){  fs->winflag = 1;  if (!move_window(fs, 0)) return FR_RW_ERROR;#if _USE_FSINFO  if (fs->fs_type == FS_FAT32 && fs->fsi_flag) {    /* Update FSInfo sector if needed */    fs->winsect = 0;    memset(fs->win, 0, 512);    ST_U16(&fs->win[BS_55AA], 0xAA55);    ST_U32(&fs->win[FSI_LeadSig], 0x41615252);    ST_U32(&fs->win[FSI_StrucSig], 0x61417272);    ST_U32(&fs->win[FSI_Free_Count], fs->free_clust);    ST_U32(&fs->win[FSI_Nxt_Free], fs->last_clust);    diskWrite(0, fs->win, fs->fsi_sector, 1);    fs->fsi_flag = 0;  }#endif  if (diskIoctl(fs->drive, IOCTL_CTRL_SYNC, NULL) != DRESULT_OK) return FR_RW_ERROR;  return FR_OK;}#endif/*-----------------------------------------------------------------------*//* Get a cluster status                                                  *//*-----------------------------------------------------------------------*/staticU32 get_cluster (   /* 0,>=2: successful, 1: failed */    FATFS *fs,      /* File system object */    U32 clust     /* Cluster# to get the link information */    ){  U16 wc, bc;  U32 fatsect;  if (clust >= 2 && clust < fs->max_clust) {    /* Valid cluster# */    fatsect = fs->fatbase;    switch (fs->fs_type) {      case FS_FAT12 :        bc = (U16)clust * 3 / 2;        if (!move_window(fs, fatsect + (bc / S_SIZ))) break;        wc = fs->win[bc & (S_SIZ - 1)]; bc++;        if (!move_window(fs, fatsect + (bc / S_SIZ))) break;        wc |= (U16)fs->win[bc & (S_SIZ - 1)] << 8;        return (clust & 1) ? (wc >> 4) : (wc & 0xFFF);      case FS_FAT16 :        if (!move_window(fs, fatsect + (clust / (S_SIZ / 2)))) break;        return LD_U16(&fs->win[((U16)clust * 2) & (S_SIZ - 1)]);      case FS_FAT32 :        if (!move_window(fs, fatsect + (clust / (S_SIZ / 4)))) break;        return LD_U32(&fs->win[((U16)clust * 4) & (S_SIZ - 1)]) & 0x0FFFFFFF;    }  }  return 1; /* There is no cluster information, or an error occured */}/*-----------------------------------------------------------------------*//* Change a cluster status                                               *//*-----------------------------------------------------------------------*/#if _FS_READONLY == 0staticBOOL put_cluster (    /* TRUE: successful, FALSE: failed */    FATFS *fs,      /* File system object */    U32 clust,    /* Cluster# to change */    U32 val     /* New value to mark the cluster */    ){  U16 bc;  U8 *p;  U32 fatsect;  fatsect = fs->fatbase;  switch (fs->fs_type) {    case FS_FAT12 :      bc = (U16)clust * 3 / 2;      if (!move_window(fs, fatsect + (bc / S_SIZ))) return FALSE;      p = &fs->win[bc & (S_SIZ - 1)];      *p = (clust & 1) ? ((*p & 0x0F) | ((U8)val << 4)) : (U8)val;      bc++;      fs->winflag = 1;       if (!move_window(fs, fatsect + (bc / S_SIZ))) return FALSE;      p = &fs->win[bc & (S_SIZ - 1)];      *p = (clust & 1) ? (U8)(val >> 4) : ((*p & 0xF0) | ((U8)(val >> 8) & 0x0F));      break;    case FS_FAT16 :      if (!move_window(fs, fatsect + (clust / (S_SIZ / 2)))) return FALSE;      ST_U16(&fs->win[((U16)clust * 2) & (S_SIZ - 1)], (U16)val);      break;    case FS_FAT32 :      if (!move_window(fs, fatsect + (clust / (S_SIZ / 4)))) return FALSE;      ST_U32(&fs->win[((U16)clust * 4) & (S_SIZ - 1)], val);      break;    default :      return FALSE;  }  fs->winflag = 1;  return TRUE;}#endif /* !_FS_READONLY *//*-----------------------------------------------------------------------*//* Remove a cluster chain                                                *//*-----------------------------------------------------------------------*/#if _FS_READONLY == 0staticBOOL remove_chain (   /* TRUE: successful, FALSE: failed */    FATFS *fs,      /* File system object */    U32 clust     /* Cluster# to remove chain from */    ){  U32 nxt;  while (clust >= 2 && clust < fs->max_clust) {    nxt = get_cluster(fs, clust);    if (nxt == 1) return FALSE;    if (!put_cluster(fs, clust, 0)) return FALSE;    if (fs->free_clust != 0xFFFFFFFF) {      fs->free_clust++;#if _USE_FSINFO      fs->fsi_flag = 1;#endif    }    clust = nxt;  }  return TRUE;}#endif/*-----------------------------------------------------------------------*//* Stretch or create a cluster chain                                     *//*-----------------------------------------------------------------------*/#if _FS_READONLY == 0staticU32 create_chain (  /* 0: no free cluster, 1: error, >=2: new cluster number */    FATFS *fs,      /* File system object */    U32 clust     /* Cluster# to stretch, 0 means create new */    ){  U32 cstat, ncl, scl, mcl = fs->max_clust;  if (clust == 0) {   /* Create new chain */    scl = fs->last_clust;     /* Get suggested start point */    if (scl == 0 || scl >= mcl) scl = 1;  }  else {          /* Stretch existing chain */    cstat = get_cluster(fs, clust); /* Check the cluster status */    if (cstat < 2) return 1;    /* It is an invalid cluster */    if (cstat < mcl) return cstat;  /* It is already followed by next cluster */    scl = clust;  }  ncl = scl;        /* Start cluster */  for (;;) {    ncl++;              /* Next cluster */    if (ncl >= mcl) {       /* Wrap around */      ncl = 2;      if (ncl > scl) return 0;  /* No free custer */    }    cstat = get_cluster(fs, ncl); /* Get the cluster status */    if (cstat == 0) break;      /* Found a free cluster */    if (cstat == 1) return 1;   /* Any error occured */    if (ncl == scl) return 0;   /* No free custer */  }  if (!put_cluster(fs, ncl, 0x0FFFFFFF)) return 1;    /* Mark the new cluster "in use" */  if (clust && !put_cluster(fs, clust, ncl)) return 1;  /* Link it to previous one if needed */  fs->last_clust = ncl;       /* Update fsinfo */  if (fs->free_clust != 0xFFFFFFFF) {    fs->free_clust--;#if _USE_FSINFO    fs->fsi_flag = 1;#endif  }  return ncl;   /* Return new cluster number */}#endif /* !_FS_READONLY *//*-----------------------------------------------------------------------*//* Get sector# from cluster#                                             *//*-----------------------------------------------------------------------*/staticU32 clust2sect (  /* !=0: sector number, 0: failed - invalid cluster# */    FATFS *fs,    /* File system object */    U32 clust   /* Cluster# to be converted */    ){  clust -= 2;  if (clust >= (fs->max_clust - 2)) return 0;   /* Invalid cluster# */  return clust * fs->sects_clust + fs->database;}/*-----------------------------------------------------------------------*//* Move directory pointer to next                                        *//*-----------------------------------------------------------------------*/staticBOOL next_dir_entry ( /* TRUE: successful, FALSE: could not move next */    DIR *dirobj     /* Pointer to directory object */    ){  U32 clust;  U16 idx;  FATFS *fs = dirobj->fs;  idx = dirobj->index + 1;  if ((idx & ((S_SIZ - 1) / 32)) == 0) {    /* Table sector changed? */    dirobj->sect++;     /* Next sector */    if (!dirobj->clust) {   /* In static table */      if (idx >= fs->n_rootdir) return FALSE; /* Reached to end of table */    } else {          /* In dynamic table */      if (((idx / (S_SIZ / 32)) & (fs->sects_clust - 1)) == 0) {  /* Cluster changed? */        clust = get_cluster(fs, dirobj->clust);   /* Get next cluster */        if (clust < 2 || clust >= fs->max_clust)  /* Reached to end of table */          return FALSE;        dirobj->clust = clust;        /* Initialize for new cluster */        dirobj->sect = clust2sect(fs, clust);      }    }  }  dirobj->index = idx;  /* Lower 4 bit of dirobj->index indicates offset in dirobj->sect */  return TRUE;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产综合草草| 精品国产污网站| 亚洲综合激情网| 欧美性淫爽ww久久久久无| 国产精品天美传媒沈樵| 国产成人亚洲精品狼色在线| 日韩免费高清视频| 国产在线精品一区二区夜色| 日韩一区二区不卡| 精品一区二区在线免费观看| 精品国产伦一区二区三区观看方式 | 久久色在线视频| 成人激情综合网站| 亚洲丝袜精品丝袜在线| 欧美日韩久久久一区| 97se狠狠狠综合亚洲狠狠| 夜夜嗨av一区二区三区网页| 欧美一区二区三区人| 成人午夜又粗又硬又大| 一区二区三区中文字幕电影 | 欧美成人三级电影在线| 99r精品视频| 日本不卡高清视频| 中文字幕一区二区三区蜜月| 欧美日韩国产一级二级| 国产一区二区三区四区五区入口 | 亚洲精品视频一区| 日韩欧美一区二区免费| 91在线视频网址| 国产一区二区在线观看视频| 亚洲精品videosex极品| 国产午夜一区二区三区| 3atv一区二区三区| 色综合一个色综合亚洲| 国产精品一区二区久激情瑜伽| 亚洲成a人v欧美综合天堂下载| 国产欧美一区二区在线| 日韩一区二区免费高清| 在线免费观看日本一区| 国产精品一区一区| 亚洲成av人综合在线观看| 国产性天天综合网| 91精品国产高清一区二区三区 | 日韩欧美亚洲国产另类| 久久国产免费看| 亚洲午夜羞羞片| 亚洲特级片在线| 日本一区二区三区dvd视频在线| 日韩精品资源二区在线| av资源网一区| 不卡的av网站| 成人app网站| 国产精品99久久久| 丁香六月久久综合狠狠色| 久久91精品国产91久久小草| 亚洲国产精品一区二区久久| 亚洲欧洲av在线| 9191国产精品| 日韩一区二区在线看片| 日韩免费看网站| 日韩精品最新网址| 国产日韩精品视频一区| 日本一区二区三区四区在线视频| 久久亚洲二区三区| 久久久久久**毛片大全| 日韩欧美国产成人一区二区| 在线观看91av| 欧美国产一区二区在线观看| 欧美成人福利视频| 中文字幕国产一区| 日韩毛片视频在线看| 亚洲视频一区在线| 五月婷婷综合网| 国产精品99久久久久久有的能看 | 国产亚洲va综合人人澡精品 | 日韩美一区二区三区| 欧美老肥妇做.爰bbww| 久久九九影视网| 日韩伦理免费电影| 麻豆中文一区二区| 在线免费不卡视频| 调教+趴+乳夹+国产+精品| 97成人超碰视| 国产精品三级av在线播放| 国产中文一区二区三区| 毛片一区二区三区| 欧美三级日韩三级国产三级| 亚洲精品美国一| 欧美性受极品xxxx喷水| 亚洲一区二区美女| 欧美一区二区三区免费大片| 蜜桃久久精品一区二区| 欧美一级二级三级蜜桃| 麻豆免费精品视频| 欧美高清视频在线高清观看mv色露露十八| 亚洲欧美激情小说另类| 99久久99久久精品免费观看| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲精品日韩一| 成人性色生活片| 欧美中文字幕一二三区视频| 国产欧美一区二区精品忘忧草| 午夜久久福利影院| 欧美写真视频网站| 亚洲少妇30p| 成人午夜视频网站| 国产精品毛片久久久久久久| 亚洲午夜久久久久久久久电影网| 国产福利不卡视频| 欧美国产一区在线| 91丨九色丨国产丨porny| 久久久精品综合| 国产99精品在线观看| 亚洲人被黑人高潮完整版| 91在线小视频| 亚洲一二三专区| 欧美日韩国产一区二区三区地区| 日日噜噜夜夜狠狠视频欧美人 | 午夜在线电影亚洲一区| 欧美肥胖老妇做爰| 精品无码三级在线观看视频| 国产三级一区二区三区| 国产成人综合在线观看| 中文字幕制服丝袜成人av| 在线观看亚洲一区| 久久精品国产99久久6| 欧美制服丝袜第一页| 免费观看一级特黄欧美大片| 久久久综合精品| 色天天综合色天天久久| 麻豆精品在线播放| 精品久久国产字幕高潮| 欧美精品国产精品| 国产成人aaaa| 成人激情黄色小说| 国产精品资源站在线| 精品一区二区三区在线播放视频| 一二三四社区欧美黄| 日韩一区在线看| 国产精品久久久久四虎| 337p粉嫩大胆色噜噜噜噜亚洲| 国产日韩欧美精品电影三级在线| 成人一区二区三区| 国产在线精品视频| 老色鬼精品视频在线观看播放| 亚洲福利国产精品| 洋洋成人永久网站入口| 亚洲猫色日本管| 天天操天天干天天综合网| 中文字幕一区二区5566日韩| 国产欧美综合在线| 亚洲九九爱视频| 亚洲综合偷拍欧美一区色| 中文字幕一区二区三区精华液| 欧美一级片在线观看| 91精品国产手机| 国产精品嫩草影院av蜜臀| 午夜视黄欧洲亚洲| 国产999精品久久| 3d成人h动漫网站入口| 国产精品美女久久福利网站| 麻豆一区二区三区| 欧美日韩国产美| 亚洲特级片在线| 粉嫩aⅴ一区二区三区四区| 欧美精品久久一区二区三区| 国产精品美女久久久久aⅴ国产馆| 午夜久久电影网| 日本道免费精品一区二区三区| 精品国产不卡一区二区三区| 亚洲福利视频一区二区| 91论坛在线播放| 亚洲少妇中出一区| 成人av中文字幕| 国产精品久久二区二区| 丰满放荡岳乱妇91ww| 精品日韩成人av| 国产盗摄精品一区二区三区在线 | **网站欧美大片在线观看| 久久99精品视频| 久久综合视频网| 国产一区二区三区观看| 久久综合九色综合久久久精品综合| 免费精品视频在线| 久久人人爽爽爽人久久久| 国产精品123| 国产精品短视频| 91视频com| 欧美国产日本视频| 日韩在线a电影| 欧美日韩一区二区三区四区五区| 亚洲一区在线视频| 亚洲精品在线免费观看视频| 91色.com| 国内外精品视频| 日日夜夜精品视频免费| 国产精品福利影院| 日韩欧美成人午夜| 欧美三级视频在线观看 | 狠狠狠色丁香婷婷综合激情|