fatfs系统的移植
integer.h FATFS的数据类型定义(一般不需要更改,其他的文件都需要引用这个文件的内容)
ffcon.h FATFS的配置文件,配置项的各个参数都需要在这里修改
一个细致的讲解fatfs文件系统的原理
https://www.cnblogs.com/amanlikethis/p/3793077.html
fatfs(API)函数的使用
FRESULT error;//定义fatfs操作返回结果
FIL fsrc; //FIL掌控一个已打开的文件,由f_open()创建,f_close()抛弃
UINT bytesWritten;
UINT bytesRead;
UINT readBuffer[50];
error=f_mount(fs[1],"1:",1); //挂载FLASH.
if(!error){
printf("fs[1] load sd is ok\r\n");
}else if(error==0X0D){//FLASH磁盘,FAT文件系统错误,重新格式化FLASH
error=f_mkfs("1:",1,4096);//格式化FLASH,1,盘符;1,不需要引导区,8个扇区为1个簇
if(error==0){
printf("Flash Disk Format Finish"); //格式化完成
}else{
printf("Flash Disk Format Error "); //格式化失败
}
}else{
printf("fs[1] load sd err ,the error num is %d\r\n",error);
}
#if 0 //这里是txt文件的创立和使用
error = f_setlabel((const TCHAR *)"1:START"); //设置Flash磁盘的名字为:START
if(!error){
printf("set sd's name is ok\r\n");
}else{
printf("set sd's name err ,the error num is %d\r\n",error);
}
error = f_mkdir("1:/523");//创立文件夹(创建一次后再次创建会失败) 1:/523 盘符 + 名称
if(!error){
printf("dir create ok\r\n");
}else{
printf("dir create err ,the error num is %d\r\n",error);
}
error = f_open(&fsrc, "1:523.txt", FA_OPEN_ALWAYS|FA_WRITE|FA_READ ); //创立txt文件 1:523.txt FA_OPEN_ALWAYS(打开一个文件,如果不存在就创建该文件)
if(!error){
printf("file create ok\r\n");
}else{
printf("file create err ,the error num is %d\r\n",error);
}
error = f_write (&fsrc , "test" , 5 , &bytesWritten); //在 fsrc 文件内写入test字符串
if(!error){
printf("write 'test' is ok\r\n");
}else{
printf("write 'test' err ,the error num is %d\r\n",error);
}
error = f_close(&fsrc); //关闭 fsrc 文件(打开之后必须关闭)
if(!error){
printf("close file ok\r\n");
}else{
printf("close file err ,the error num is %d\r\n",error);
}
error = f_open(&fsrc, "1:523.txt", FA_READ ); //打开一个可以读取的文件
if(!error){
printf("open a text for read is ok\r\n");
}else{
printf("open a text for read err ,the error num is %d\r\n",error);
}
error = f_read(&fsrc, &readBuffer ,50, &bytesRead); //读取一个文件
if(!error){
printf("read a text is ok\r\n");
}else{
printf("read a text err ,the error num is %d\r\n",error);
}
error = f_sync(&fsrc); //刷新一个缓存
if(!error){
printf("crush a text is ok\r\n");
}else{
printf("crush a text err ,the error num is %d\r\n",error);
}
error = f_rename("1:523.txt","1:524.txt"); //修改一个文件名(oldname newname--不能跟其他文件名冲突 )
if(!error){
printf("rename a text is ok\r\n");
}else{
printf("rename a text err ,the error num is %d\r\n",error);
}
error = f_unlink("1:524.txt"); //删除一个文件
if(!error){
printf("delete a text is ok\r\n");
}else{
printf("detele a text err ,the error num is %d\r\n",error);
}
fatfs系统的移植的更多相关文章
- 鸿蒙系统freeModbusTcp移植简介
freeModebus是工业中常用的一种通信, 在鸿蒙系统来移植 细节查看代码中,博文只是一些参考以及注意点, 参考了 wifi连接: https://harmonyos.51cto.com/post ...
- FatFs文件系统的移植
FatFs 的底层可以写一次命令,读写多个扇区.FatFs的设计的读写的思想就很好,小块的数据,我就经过Buffer来存储,大块的数据,我就直接进行存取,那样速度,效率高了很多,看图: FatFs文件 ...
- 【液晶模块系列基础视频】3.1.fatfs文件系统的移植及接口函数的使用
============================== 技术论坛:http://www.eeschool.org 博客地址:http://xiaomagee.cnblogs.com 官方网店:h ...
- Android系统如何移植wpa_supplicant及wifi驱动
一.WPA_SUPPLICANT简介 1. 什么是wpa_supplicant wpa_supplicant is a WPA Supplicant for Linux, BSD, Mac OS X, ...
- STM32下FatFs的移植,实现了坏块管理,硬件ECC,ECC纠错,并进行擦写均衡分析
最近因项目需要,做一个数据采集的单片机平台.需要移植 FatFs .现在把最后成果贴上来. 1.摘要 在 STM32 单片机上,成功移植 FatFs 0.12b,使用的 Nand Flash 芯片为 ...
- FATFS文件系统
STM32移植文件系统,操作SD卡,对SD卡进行读写 FATFS文件系统与底层介质的驱动分离开来,对底层介质的操作都要交给用户去实现,它仅仅是提供了一个函数接口而已,函数为空,要用户添加代码.然后 F ...
- 玩转X-CTR100 l STM32F4 l SD卡FatFs文件系统
我造轮子,你造车,创客一起造起来!塔克创新资讯[塔克社区 www.xtark.cn ][塔克博客 www.cnblogs.com/xtark/ ] X-CTR100控制器具有SD卡接口,本教程使用免费 ...
- STM32平台SD卡的FatFS文件系统开发
STM32平台SD卡的FatFS文件系统开发 系统平台: STM32系列的STM32F103ZE SPI方式与SD卡通信 SD上移植FatFS系统 1 FatFS文件系统 1.1 FatFS简介 Fa ...
- 第25章 串行FLASH文件系统FatFs
25.1 文件系统 即使读者可能不了解文件系统,读者也一定对“文件”这个概念十分熟悉.数据在PC上是以文件的形式储存在磁盘中的,这些数据的形式一般为ASCII码或二进制形式.在上一章我们已经写好了Q ...
随机推荐
- 【内功修炼】"裁员潮",“中年危机”,该如何战胜你的焦虑
"裁员"."中年危机"这些曾经看上去比较遥远的词汇,最近开始频繁出现在各种文章和新闻中,个人觉得这主要由两方面原因造成: 近两年,国内外经济形势严峻(更有经济学 ...
- CMD命令打包文件夹成jar
网上的很多例子都是直接将在dos界面下输入jar命令出现的帮助信息给贴上了.不明白的人根本看不懂.当然我也看不懂,好在自己试了好多遍,终于成功了.现在我就根据我刚刚的操作来说明一下. 我介绍的是将一个 ...
- Android 打开相册拍照选择多张图片显示
添加依赖: compile 'me.iwf.photopicker:PhotoPicker:0.1.8' compile 'com.jaeger.ninegridimageview:library:1 ...
- python多线程中join()的理解
在 Python 的多线程编程中,经常碰到 thread.join()这样的代码.那么今天咱们用实际代码来解释一下 join 函数的作用. 第一,当一个进程启动之后,会默认产生一个主线程,因为线程是程 ...
- 【440】Tweet 元素意义
参考:Tweet Object 参考:Geo Objects 参考:User Object Ref: Place data dictionary Tweet Object Attribut ...
- Apache调优(二)
Apache调优(一) (1).Apache运行模式说明 Apache目前一共有三种稳定的MPM(Multi-Processing Module,多进程处理模块)模式:Prefork(进程模式).Wo ...
- jQuery 属性操作 - toggleClass() 方法
实例 对设置和移除所有 元素的 "main" 类进行切换: $("button").click(function(){ $("p").tog ...
- python flask框架学习——开启debug模式
学习自:知了课堂Python Flask框架——全栈开发 1.flask的几种debug模式的方法 # 1.app.run 传参debug=true app.run(debug=True) #2 设置 ...
- 【PromQL】prometheus查询语言
常用查询: https://songjiayang.gitbooks.io/prometheus/content/exporter/nodeexporter_query.html group by 操 ...
- 《MySQL必知必会》学习笔记——第30章 改善性能
本章将付息与MySQL性能有关的某些要点. 30.1 改善性能 数据库管理员把他们生命中的相当一部分时间花在了调整.试验以改善DBMS性能之上.在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及 ...