小学生
最后登录1970-1-1
在线时间 小时
注册时间2022-9-2
|
- FATFS fsObject;//一个大的结构体,包含文件系统的各种定义,取地址后作为f_mount的实参
- FIL fp;//文件句柄,先给fopen函数,用作为各种fwrite、fread函数的实参
- const char wDATA[] = "hello gugu,欢迎使用stm32野火开发板~";//需要写入文件的数据
- //const int wDATA[] = {1,2,3,4,5,6};也可以写入非字符串数据
- UINT bw;//定义f_write函数已经写入的字节数
- char rDATA[] = "";//用于存放从写入后的文件所读取的数据
- UINT br;//定义f_read函数已经读取的字节数
- DIR dir;//路径(文件夹)句柄
- /**
- * [url=home.php?mod=space&uid=41770]@brief[/url] 主函数
- * @param 无
- * @retval 无
- */
- int main(void)
- {
- FRESULT res;
-
- LED_GPIO_Config();
- LED_BLUE;
-
- USART_Config();
- printf("这是一个FATFS文件系统移植实验 \r\n");
-
- res = f_mount(&fsObject,"1:",1);//文件系统挂载函数,移植文件系统前必须调用的函数,经过层层调用会调到disk_initialize函数
-
- printf("f_mount res = %d\n",res);
-
- if(res == FR_NO_FILESYSTEM){//当返回"没有文件系统时",调用格式化函数,以删除磁盘原有数据,并生成文件系统信息
- res = f_mkfs ("1:", 0, 0);//使用f_mkfs函数需要在ffconf.h头文件中使能
- printf("f_mkfs res = %d\n",res);
-
- res = f_mount(NULL,"1:",1);//格式化后必须取消挂载,再重新挂载
- res = f_mount(&fsObject,"1:",1);
- printf("2nd f_mount res = %d\n",res);
- }
-
- //系统挂载成功后,可以进行文件操作,先打开文件
- res = f_open(&fp,"1:宝贝猪.txt",FA_OPEN_ALWAYS | FA_READ | FA_WRITE);//按位或?
- printf("f_open res = %d\n",res);
- if(res == FR_OK){//文件成功打开后,可以写入数据
- res = f_write(&fp, wDATA,sizeof(wDATA), &bw);
- printf("f_write res = %d;写入的字节数 = %d\n",res, bw);
-
- if(res == FR_OK){//写入成功后,可以读取数据
- f_rewind(&fp);//注意写完数据后,文件位置指针指向文件末尾,需要先将文件位置指针移至开头
- res = f_read(&fp, rDATA,f_size(&fp), &br);//注意此处通过f_size来获取文件大小
- printf("f_read res = %d;读取的字节数 = %d\n",res, br);
-
- if(res == FR_OK){//读取成功后,可以打印数据到串口
- printf("文件内容:%s\n",rDATA);
- }
- }
- res = f_close(&fp);
- printf("f_close res = %d\n",res);
复制代码 串口打印如图
|
|