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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ff.c

?? 最新的LPC214X FATFS驅動程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
FRESULT f_mkdir (    const char *path    /* Pointer to the directory path */    ){  U8 *dir, *fw, n;  char fn[8+3+1];  U32 sect, dsect, dclust, pclust, tim;  FRESULT res;  DIR dirobj;  FATFS *fs;  res = auto_mount(&path, &fs, 1);  if (res != FR_OK) return res;  dirobj.fs = fs;  res = trace_path(&dirobj, fn, path, &dir);  /* Trace the file path */  if (res == FR_OK) return FR_EXIST;      /* Any file or directory is already existing */  if (res != FR_NO_FILE) return res;  res = reserve_direntry(&dirobj, &dir);    /* Reserve a directory entry */  if (res != FR_OK) return res;  sect = fs->winsect;  dclust = create_chain(fs, 0);       /* Allocate a cluster for new directory table */  if (dclust == 1) return FR_RW_ERROR;  dsect = clust2sect(fs, dclust);  if (!dsect) return FR_DENIED;  if (!move_window(fs, dsect)) return FR_RW_ERROR;  fw = fs->win;  memset(fw, 0, S_SIZ);           /* Clear the new directory table */  for (n = 1; n < fs->sects_clust; n++) {    if (diskWrite(fs->drive, fw, ++dsect, 1) != DRESULT_OK)      return FR_RW_ERROR;  }  memset(&fw[DIR_Name], ' ', 8+3);      /* Create "." entry */  fw[DIR_Name] = '.';  fw[DIR_Attr] = AM_DIR;  tim = get_fattime();  ST_U32(&fw[DIR_WrtTime], tim);  memcpy(&fw[32], &fw[0], 32); fw[33] = '.';  /* Create ".." entry */  pclust = dirobj.sclust;#if _FAT32  ST_U16(&fw[   DIR_FstClusHI], dclust >> 16);  if (fs->fs_type == FS_FAT32 && pclust == fs->dirbase) pclust = 0;  ST_U16(&fw[32+DIR_FstClusHI], pclust >> 16);#endif  ST_U16(&fw[   DIR_FstClusLO], dclust);  ST_U16(&fw[32+DIR_FstClusLO], pclust);  fs->winflag = 1;  if (!move_window(fs, sect)) return FR_RW_ERROR;  memset(&dir[0], 0, 32);           /* Initialize the new entry */  memcpy(&dir[DIR_Name], fn, 8+3);      /* Name */  dir[DIR_NTres] = fn[11];  dir[DIR_Attr] = AM_DIR;           /* Attribute */  ST_U32(&dir[DIR_WrtTime], tim);     /* Crated time */  ST_U16(&dir[DIR_FstClusLO], dclust);    /* Table start cluster */  ST_U16(&dir[DIR_FstClusHI], dclust >> 16);  return sync(fs);}/*-----------------------------------------------------------------------*//* Change File Attribute                                                 *//*-----------------------------------------------------------------------*/FRESULT f_chmod (    const char *path, /* Pointer to the file path */    U8 value,     /* Attribute bits */    U8 mask     /* Attribute mask to change */    ){  FRESULT res;  U8 *dir;  DIR dirobj;  char fn[8+3+1];  FATFS *fs;  res = auto_mount(&path, &fs, 1);  if (res == FR_OK) {    dirobj.fs = fs;    res = trace_path(&dirobj, fn, path, &dir);  /* Trace the file path */    if (res == FR_OK) {     /* Trace completed */      if (dir == NULL) {        res = FR_INVALID_NAME;      } else {        mask &= AM_RDO|AM_HID|AM_SYS|AM_ARC;  /* Valid attribute mask */        dir[DIR_Attr] = (value & mask) | (dir[DIR_Attr] & (U8)~mask); /* Apply attribute change */        res = sync(fs);      }    }  }  return res;}/*-----------------------------------------------------------------------*//* Rename File/Directory                                                 *//*-----------------------------------------------------------------------*/FRESULT f_rename (    const char *path_old, /* Pointer to the old name */    const char *path_new  /* Pointer to the new name */    ){  FRESULT res;  U32 sect_old;  U8 *dir_old, *dir_new, direntry[32-11];  DIR dirobj;  char fn[8+3+1];  FATFS *fs;  res = auto_mount(&path_old, &fs, 1);  if (res != FR_OK) return res;  dirobj.fs = fs;  res = trace_path(&dirobj, fn, path_old, &dir_old);  /* Check old object */  if (res != FR_OK) return res;     /* The old object is not found */  if (!dir_old) return FR_NO_FILE;  sect_old = fs->winsect;         /* Save the object information */  memcpy(direntry, &dir_old[DIR_Attr], 32-11);  res = trace_path(&dirobj, fn, path_new, &dir_new);  /* Check new object */  if (res == FR_OK) return FR_EXIST;      /* The new object name is already existing */  if (res != FR_NO_FILE) return res;      /* Is there no old name? */  res = reserve_direntry(&dirobj, &dir_new);  /* Reserve a directory entry */  if (res != FR_OK) return res;  memcpy(&dir_new[DIR_Attr], direntry, 32-11);  /* Create new entry */  memcpy(&dir_new[DIR_Name], fn, 8+3);  dir_new[DIR_NTres] = fn[11];  fs->winflag = 1;  if (!move_window(fs, sect_old)) return FR_RW_ERROR; /* Remove old entry */  dir_old[DIR_Name] = 0xE5;  return sync(fs);}#if _USE_MKFS/*-----------------------------------------------------------------------*//* Create File System on the Drive                                       *//*-----------------------------------------------------------------------*/#define N_ROOTDIR 512#define N_FATS 1#define MAX_SECTOR 64000000UL#define MIN_SECTOR 2000UL#define ERASE_BLK 32FRESULT f_mkfs (    U8 drv,   /* Logical drive number */    U8 partition,   /* Partitioning rule 0:FDISK, 1:SFD */    U8 allocsize    /* Allocation unit size [sectors] */    ){  U8 fmt, m, *tbl;  U32 b_part, b_fat, b_dir, b_data;   /* Area offset (LBA) */  U32 n_part, n_rsv, n_fat, n_dir;    /* Area size */  U32 n_clust, n;  FATFS *fs;  DSTATUS stat;  /* Check and mounted drive and clear work area */  if (drv >= _DRIVES)     return FR_INVALID_DRIVE;  if (!(fs = FatFs [drv]))    return FR_NOT_ENABLED;  memset (fs, 0, sizeof(FATFS));  drv = LD2PD(drv);  /* Check validity of the parameters */  for (n = 1; n <= 64 && allocsize != n; n <<= 1)    ;  if (n > 64 || partition >= 2)   { // ###    // printf ("line %d: n > 64 || partition >= 2.  n=%d, partition=%d\n", __LINE__, n, partition); // ###    return FR_MKFS_ABORTED;  } // ###  /* Get disk statics */  stat = diskInitialize (drv);  if (stat & DSTATUS_NOINIT)     return FR_NOT_READY;  if (stat & DSTATUS_PROTECT)     return FR_WRITE_PROTECTED;  { // ###    DRESULT dres; // ###    if ((dres = diskIoctl (drv, IOCTL_GET_SECTOR_COUNT, &n_part)) != DRESULT_OK || n_part < MIN_SECTOR)    { // ###      // printf ("line %d: ioctl returned %d.  n_part=%d, MIN_SECTOR=%d\n", __LINE__, dres, n_part, MIN_SECTOR); // ###      return FR_MKFS_ABORTED;    } // ###  } // ###  if (n_part > MAX_SECTOR)     n_part = MAX_SECTOR;  b_part = (!partition) ? 63 : 0;  n_part -= b_part;#if S_MAX_SIZ > 512           /* Check disk sector size */  if (diskIoctl(drv, IOCTL_GET_SECTOR_SIZE, &S_SIZ) != DRESULT_OK      || S_SIZ > S_MAX_SIZ      || (U32)S_SIZ * allocsize > 32768U)    return FR_MKFS_ABORTED;#endif  /* Pre-compute number of clusters and FAT type */  n_clust = n_part / allocsize;  fmt = FS_FAT12;  if (n_clust >= 0xFF7) fmt = FS_FAT16;  if (n_clust >= 0xFFF7) fmt = FS_FAT32;  switch (fmt) {    case FS_FAT12:      n_fat = ((n_clust * 3 + 1) / 2 + 3 + S_SIZ - 1) / S_SIZ;      n_rsv = 1 + partition;      n_dir = N_ROOTDIR * 32 / S_SIZ;      break;    case FS_FAT16:      n_fat = ((n_clust * 2) + 4 + S_SIZ - 1) / S_SIZ;      n_rsv = 1 + partition;      n_dir = N_ROOTDIR * 32 / S_SIZ;      break;    default:      n_fat = ((n_clust * 4) + 8 + S_SIZ - 1) / S_SIZ;      n_rsv = 33 - partition;      n_dir = 0;  }  b_fat = b_part + n_rsv;     /* FATs start sector */  b_dir = b_fat + n_fat * N_FATS; /* Directory start sector */  b_data = b_dir + n_dir;     /* Data start sector */#ifdef ERASE_BLK  /* Round up data start sector to erase block boundary */  n = (b_data + ERASE_BLK - 1) & ~(ERASE_BLK - 1);  b_dir += n - b_data;  n_fat += (n - b_data) / N_FATS;#endif  /* Determine number of cluster and final check of validity of the FAT type */  n_clust = (n_part - n_rsv - n_fat * 2 - n_dir) / allocsize;  if (   (fmt == FS_FAT16 && n_clust < 0xFF7)      || (fmt == FS_FAT32 && n_clust < 0xFFF7))  { // ###    // printf ("line %d: fmt=%d, FS_FAT16=%d, FS_FAT32=%d, n_clust=0x%x\n", __LINE__, fmt, FS_FAT16, FS_FAT32, n_clust); // ###    return FR_MKFS_ABORTED;  } // ###  /* Create partition table if needed */  if (!partition) {    U32 n_disk = b_part + n_part;    tbl = &fs->win[MBR_Table];    ST_U32(&tbl[0], 0x00010180);  /* Partition start in CHS */    if (n_disk < 63UL * 255 * 1024) { /* Partition end in CHS */      n_disk = n_disk / 63 / 255;      tbl[7] = (U8)n_disk;      tbl[6] = (U8)((n_disk >> 2) | 63);    } else {      ST_U16(&tbl[6], 0xFFFF);    }    tbl[5] = 254;    if (fmt != FS_FAT32)      /* System ID */      tbl[4] = (n_part < 0x10000) ? 0x04 : 0x06;    else      tbl[4] = 0x0c;    ST_U32(&tbl[8], 63);      /* Partition start in LBA */    ST_U32(&tbl[12], n_part);   /* Partition size in LBA */    ST_U16(&tbl[64], 0xAA55);   /* Signature */    if (diskWrite(drv, fs->win, 0, 1) != DRESULT_OK)      return FR_RW_ERROR;  }  /* Create boot record */  memset(tbl = fs->win, 0, S_SIZ);  ST_U32(&tbl[BS_jmpBoot], 0x90FEEB);   /* Boot code (jmp $, nop) */  ST_U16(&tbl[BPB_BytsPerSec], S_SIZ);    /* Sector size */  tbl[BPB_SecPerClus] = (U8)allocsize;    /* Sectors per cluster */  ST_U16(&tbl[BPB_RsvdSecCnt], n_rsv);    /* Reserved sectors */  tbl[BPB_NumFATs] = N_FATS;          /* Number of FATs */  ST_U16(&tbl[BPB_RootEntCnt], S_SIZ / 32 * n_dir); /* Number of rootdir entries */  if (n_part < 0x10000) {           /* Number of total sectors */    ST_U16(&tbl[BPB_TotSec16], n_part);  } else {    ST_U32(&tbl[BPB_TotSec32], n_part);  }  tbl[BPB_Media] = 0xF8;            /* Media descripter */  ST_U16(&tbl[BPB_SecPerTrk], 63);      /* Number of sectors per track */  ST_U16(&tbl[BPB_NumHeads], 255);      /* Number of heads */  ST_U32(&tbl[BPB_HiddSec], b_part);    /* Hidden sectors */  if (fmt != FS_FAT32) {    ST_U16(&tbl[BPB_FATSz16], n_fat);   /* Number of secters per FAT */    tbl[BS_DrvNum] = 0x80;          /* Drive number */    tbl[BS_BootSig] = 0x29;         /* Extended boot signature */    memcpy(&tbl[BS_VolLab], "NO NAME    FAT     ", 19); /* Volume lavel, FAT signature */  } else {    ST_U32(&tbl[BPB_FATSz32], n_fat);   /* Number of secters per FAT */    ST_U32(&tbl[BPB_RootClus], 2);    /* Root directory cluster (2) */    ST_U16(&tbl[BPB_FSInfo], 1);      /* FSInfo record (bs+1) */    ST_U16(&tbl[BPB_BkBootSec], 6);   /* Backup boot record (bs+6) */    tbl[BS_DrvNum32] = 0x80;        /* Drive number */    tbl[BS_BootSig32] = 0x29;       /* Extended boot signature */    memcpy(&tbl[BS_VolLab32], "NO NAME    FAT32   ", 19); /* Volume lavel, FAT signature */  }  ST_U16(&tbl[BS_55AA], 0xAA55);      /* Signature */  if (diskWrite(drv, tbl, b_part+0, 1) != DRESULT_OK)    return FR_RW_ERROR;  if (fmt == FS_FAT32)    diskWrite(drv, tbl, b_part+6, 1);  /* Initialize FAT area */  for (m = 0; m < N_FATS; m++) {    memset(tbl, 0, S_SIZ);    /* 1st sector of the FAT  */    if (fmt != FS_FAT32) {      n = (fmt == FS_FAT12) ? 0x00FFFFF8 : 0xFFFFFFF8;      ST_U32(&tbl[0], n);     /* Reserve cluster #0-1 (FAT12/16) */    } else {      ST_U32(&tbl[0], 0xFFFFFFF8);  /* Reserve cluster #0-1 (FAT32) */      ST_U32(&tbl[4], 0xFFFFFFFF);      ST_U32(&tbl[8], 0x0FFFFFFF);  /* Reserve cluster #2 for root dir */    }    if (diskWrite(drv, tbl, b_fat++, 1) != DRESULT_OK)      return FR_RW_ERROR;    memset(tbl, 0, S_SIZ);    /* Following FAT entries are filled by zero */    for (n = 1; n < n_fat; n++) {      if (diskWrite(drv, tbl, b_fat++, 1) != DRESULT_OK)        return FR_RW_ERROR;    }  }  /* Initialize Root directory */  for (m = 0; m < 64; m++) {    if (diskWrite(drv, tbl, b_fat++, 1) != DRESULT_OK)      return FR_RW_ERROR;  }  /* Create FSInfo record if needed */  if (fmt == FS_FAT32) {    ST_U16(&tbl[BS_55AA], 0xAA55);    ST_U32(&tbl[FSI_LeadSig], 0x41615252);    ST_U32(&tbl[FSI_StrucSig], 0x61417272);    ST_U32(&tbl[FSI_Free_Count], n_clust - 1);    ST_U32(&tbl[FSI_Nxt_Free], 0xFFFFFFFF);    diskWrite(drv, tbl, b_part+1, 1);    diskWrite(drv, tbl, b_part+7, 1);  }  return (diskIoctl(drv, IOCTL_CTRL_SYNC, NULL) == DRESULT_OK) ? FR_OK : FR_RW_ERROR;}#endif /* _USE_MKFS */#endif /* !_FS_READONLY */#endif /* _FS_MINIMIZE == 0 */#endif /* _FS_MINIMIZE <= 1 */#endif /* _FS_MINIMIZE <= 2 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品成人一区二区三区四区| 91福利在线看| 色婷婷一区二区| 欧美成人官网二区| 亚洲一区二区三区四区不卡| 狠狠v欧美v日韩v亚洲ⅴ| 欧美日韩三级在线| 亚洲欧美中日韩| 国产精品99久久久久久宅男| 欧美精品久久一区二区三区| 国产精品丝袜在线| 国产精品一色哟哟哟| 91麻豆精品91久久久久同性| 亚洲一区成人在线| av影院午夜一区| 国产精品天天摸av网| 久久99日本精品| 制服.丝袜.亚洲.中文.综合| 亚洲一二三级电影| 欧美亚洲高清一区| 亚洲免费三区一区二区| 成人激情校园春色| 欧美国产乱子伦| 国产不卡在线播放| 国产欧美一区二区在线| 国内精品在线播放| 欧美精品一区二区三区很污很色的| 图片区小说区国产精品视频| 色视频欧美一区二区三区| 国产精品久久久一本精品 | 成人国产精品免费网站| 2022国产精品视频| 狠狠色2019综合网| 久久综合五月天婷婷伊人| 久久99精品久久久久久久久久久久| 7878成人国产在线观看| 日韩精品久久理论片| 欧美乱熟臀69xxxxxx| 首页亚洲欧美制服丝腿| 欧美一区欧美二区| 精品亚洲国产成人av制服丝袜| 久久新电视剧免费观看| 国产传媒久久文化传媒| 国产精品色婷婷| 91在线高清观看| 亚洲mv大片欧洲mv大片精品| 欧美人体做爰大胆视频| 美女一区二区视频| 国产日韩欧美综合在线| 91在线国产福利| 亚洲成人av在线电影| 日韩你懂的电影在线观看| 国产精品一区二区在线看| 国产精品视频免费| 精品1区2区3区| 久草中文综合在线| 亚洲日本护士毛茸茸| 欧美日韩1234| 国产精品综合一区二区| 亚洲免费观看视频| 日韩欧美色综合网站| 成人妖精视频yjsp地址| 亚洲精品成人a在线观看| 7777精品伊人久久久大香线蕉 | 午夜日韩在线电影| 亚洲精品一线二线三线| 色先锋资源久久综合| 美国欧美日韩国产在线播放| 久久蜜臀中文字幕| 欧美性大战xxxxx久久久| 久久av老司机精品网站导航| 亚洲日穴在线视频| 精品免费一区二区三区| 在线免费观看日本一区| 国产一区二区在线看| 亚洲成人一区二区| 中文子幕无线码一区tr| 欧美精品高清视频| 99re热这里只有精品视频| 免费观看一级欧美片| 尤物在线观看一区| 2023国产一二三区日本精品2022| 欧洲一区在线观看| 成人黄色国产精品网站大全在线免费观看| 亚洲va在线va天堂| 亚洲丝袜另类动漫二区| 久久亚洲一级片| 91麻豆精品久久久久蜜臀| 一本色道亚洲精品aⅴ| 国产精品一线二线三线| 日本成人在线视频网站| 亚洲免费在线观看| 中文字幕一区二区三区在线观看 | 99精品国产91久久久久久 | 91极品视觉盛宴| 成人激情文学综合网| 久久国产精品99精品国产 | 五月婷婷另类国产| 亚洲激情网站免费观看| 国产精品久久免费看| 国产视频一区二区在线| 欧美不卡在线视频| 日韩精品专区在线影院观看| 69p69国产精品| 欧美久久久影院| 欧美性色黄大片| 欧美性猛交xxxxxx富婆| 欧洲国产伦久久久久久久| 91日韩一区二区三区| 色婷婷综合久久久久中文 | 亚洲午夜影视影院在线观看| 日韩一区欧美一区| 成人免费在线观看入口| 国产精品乱码人人做人人爱| 欧美国产一区视频在线观看| 久久久久久亚洲综合| 国产亚洲欧美色| 日本一区二区视频在线观看| 久久久综合精品| 国产免费成人在线视频| 日本一区二区视频在线观看| 国产精品人妖ts系列视频| 亚洲人成在线观看一区二区| 亚洲视频一二三区| 亚洲一区二区三区四区五区黄| 亚洲国产日韩a在线播放性色| 午夜精品久久久久久| 日本视频在线一区| 激情五月婷婷综合| 国产成人一级电影| 一本色道a无线码一区v| 欧美日韩在线直播| 精品国产网站在线观看| 国产网红主播福利一区二区| 综合久久久久综合| 日韩精品每日更新| 国产99精品在线观看| 色综合激情五月| 51精品秘密在线观看| 久久久精品天堂| 亚洲欧美日韩国产中文在线| 视频一区欧美精品| 国产成人免费视频网站 | 亚洲自拍另类综合| 蜜臀av一区二区| 成人激情校园春色| 在线成人免费观看| 久久精品夜色噜噜亚洲a∨| 自拍偷拍国产精品| 蜜臀久久99精品久久久画质超高清| 国产精品18久久久久久久久久久久| 91免费国产在线| 日韩一级在线观看| 亚洲男人天堂av| 久久99精品国产麻豆婷婷 | 成人不卡免费av| 51精品国自产在线| 国产精品初高中害羞小美女文| 亚洲影院免费观看| 国产毛片精品一区| 欧美片网站yy| 日韩一区欧美小说| 国产又黄又大久久| 91精品国产综合久久久蜜臀图片 | 久久精品亚洲国产奇米99| 一二三四社区欧美黄| 国产91在线观看| 欧美va亚洲va在线观看蝴蝶网| 一个色在线综合| 99国产精品99久久久久久| 欧美va在线播放| 日韩激情在线观看| 在线视频综合导航| 国产精品久久毛片a| 国产精品自拍在线| 日韩欧美亚洲一区二区| 午夜精品久久久久久不卡8050| 91免费看`日韩一区二区| 国产精品网站在线观看| 国产激情一区二区三区四区| 日韩欧美国产三级电影视频| 午夜精品一区在线观看| 欧美色爱综合网| 亚洲精品福利视频网站| 色综合久久中文字幕综合网 | 五月婷婷色综合| 在线观看精品一区| 一区二区三区中文字幕精品精品 | 99久久综合色| 国产女主播视频一区二区| 国产在线一区观看| 欧美哺乳videos| 国产在线精品一区二区| 精品对白一区国产伦| 麻豆国产欧美日韩综合精品二区| 欧美精品在线视频| 日韩国产精品久久久久久亚洲| 欧美亚洲一区二区在线观看| 亚洲柠檬福利资源导航| 欧洲国内综合视频|