fatfs函数的用法学习方法

	 FRESULT result_9;
	 FIL file_9;
	 uint32_t bw_9;

	__align(4)  char buf_9[1024 * 4] = {0}; //.4-8-16-32-
	
	typedef struct {
		uint8_t f_open;
		uint8_t f_lseek;
		uint8_t f_write;
		uint8_t f_sync;
		uint8_t f_close;
  } cmd_struct;
	
	cmd_struct cmd;
		
	void practice_use(void)
	{
		if (cmd.f_open) {
			cmd.f_open = 0;
			result_9 = f_open(&file_9, "6.txt", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
			printf("f_open %d\r\n", result_9);
		}
		if (cmd.f_lseek) {
			cmd.f_lseek = 0;		
			result_9 = f_lseek(&file_9, f_size(&file_9));
			printf("f_lseek %d\r\n", result_9);
		}
		if (cmd.f_write) {
			cmd.f_write = 0;
			result_9 = f_write(&file_9, buf_9, sizeof(buf_9), &bw_9);
			printf("f_write %d\r\n", result_9);
		}
		if (cmd.f_sync) {
			cmd.f_sync = 0;
			result_9 = f_sync(&file_9);
			printf("f_sync %d\r\n", result_9);
		}
		if (cmd.f_close) {
			cmd.f_close = 0;		
			result_9 = f_close(&file_9);
			printf("f_close %d\r\n", result_9);
		}		
	}

把单片机里面的sd卡弄成4K的镞,可以用电脑 快格式化成4K, 或者用 fatfs那个格式化函数 弄成4K,或者用安富莱推荐的那个格式化软件,这几种格式化方式我也不知道有啥具体区别,需要用WINhex看看。

 

我用MDK在线调试,通过在线设置变量cmd的不同的值,来执行命令,然后通过FTP把文件传到电脑里面的SD卡里面.  用WINHEX查看如下:

fatfs函数的用法学习方法_第1张图片

就可以看到Cluster就是  每4K是一个Cluster。

每512字节就是一个Logical sector。

通过WINHEX查看各种写入情况。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(fileSystem)