做单片机开发难免用到文件系统,以前用的老版本,最近做新项目想搞个更新版的,结果格式化这里就遇到困难,原来版本格式化函数只有三个参数:
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。