记录一个真实项目的开发历程(3)--文件管理系统(fatfs)

本文记录了一个使用FATFS进行文件管理的真实项目开发过程,重点在于Cubemx的配置以及确保Flash的读写接口能正常工作。
摘要由CSDN通过智能技术生成

 

FATFS

首先是cubemx里面的基本配置, 注意flash的最小写单位是sector=4096Bytes, 然后实现flash的基本读写接口,需要单独测试通过之后才能布置到user_diskio.c里面去

void MX_FATFS_Init(void)
{
  /*## FatFS: Link the USER driver ###########################*/
  retUSER = FATFS_LinkDriver(&USER_Driver, USERPath);

  /* USER CODE BEGIN Init */
	/* additional user code for init */
	/* additional user code for init */
#if 1
	fs_log("--------------------FATFS SYSTEM---------------------\r\n");
	if (retUSER != RES_OK) {
		fs_log("fatfs: Link the USER driver failed.\r\n");
	}
    fs_log("try f_mount...\r\n");
	retUSER = f_mount(&USERFatFS, USERPath, 1);
	if (retUSER != RES_OK) {
		fs_log("Failed to mount the disk during system startup.(%d)\r\n", retUSER);
		if (retUSER == FR_NO_FILESYSTEM) {
			fs_log("A new disk is detected, ready to format to FAT file system.\r\n");
            fs_log("try f_mkfs...\r\n");
			retUSER = f_mkfs((const TCHAR *)USERPath, FM_FAT, 0, USERFatFS.win, sizeof(USERFatFS.win));
			if (retUSER != FR_OK) {
				fs_log("----->failed.(%d)\r\n", retUSER);
			} else {
				fs_log("----->succeddfully.(%d)\r\n", retUSER);
                fs_log("f_mount...\r\n");
				retUSER = f_mount(NULL, USERPath, 1);
				retUSER = f_mount(&USERFatFS, USERPath, 1);
				if (retUSER == FR_OK) {
					fs_log("----->succeddfully.(%d)\r\n", retUSER);
				} else {
                    fs_log("----->failed.(%d)\r\n", retUSER);
                }
			}
		}
	} else {
		uint32_t tot_sect, fre_sect;
		exf_getfree((uint8_t *)USERPath, &tot_sect, &fre_sect);
		fs_log("total %4d KB (%d Bytes) -> %04d KB (%d Bytes) available.\r\n", \
				   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值