FAT32 R0.12b f_mkfs应用实例

做单片机开发难免用到文件系统,以前用的老版本,最近做新项目想搞个更新版的,结果格式化这里就遇到困难,原来版本格式化函数只有三个参数:
FRESULT f_mkfs (
 BYTE  Drive,            /* 逻辑驱动器号 */
 BYTE  PartitioningRule, /* 分区规则 */
 WORD  AllocSize         /* 分配单元大小 */
);
最新版R0.12b (September 4, 2016)是这样的:
FRESULT f_mkfs (
  const TCHAR* path,  /* [IN] Logical drive number */
  BYTE  opt,          /* [IN] Format options */
  DWORD au,           /* [IN] Size of the allocation unit */
  void* work,         /* [-]  Working buffer */
  UINT len            /* [IN] Size of working buffer */
);
具体什么意思可参见官网,今天解决问题了,就分享一下使用实例,代码如下
void mkfs(){
  FIL fil;            /* File object */
  FRESULT res;        /* API result code */
  u8 bw;            /* Bytes written */
  u8 work[_MAX_SS]; /* Work area (larger is better for process time) */
  u8 readByte[15];

  bw=f_mkfs("0",FM_FAT|FM_SFD,1024,work,sizeof work);
  printf("%d",bw);
  res=f_mount (&fs,"0",1);
  res=f_open(&fil, "hello.txt", FA_READ | FA_WRITE);
  res=f_read(&fil,  readByte,  15, &bw);
  printf("%s",readByte);
  res=f_close(&fil);
  res=f_mount(0, "0", 0);
}

调用这个函数就会在驱动器0(实际用的是闪存w25q64)创建一个fat32文件系统。然后,就可以用面向对象的思维使用它了。注意最后一句是取消挂载。

我用的单片机是stm32f103zet6。

猜你喜欢

转载自blog.csdn.net/PoJiaA123/article/details/53750109