esp32c3使用FATFS

起因

在使用esp32c3进行开发的过程中,使用了esp/esp-idf/examples/…中的softAP示例代码为基础,进行代码的添加扩展,
在代码中需要储存整数变量,
使用nvs_flash_init、nvs_get_i32、nvs_close等函数(非易失性存储库)可以储存整数
之后由于esp32c3需要从ap模式转换为sta模式,因此在ap模式中搭建了tcp server来接收ssid、password数据,接收后就需要将数据保存起来,因而使用到了磨损均衡API

在这里插入图片描述

解决

根据文档描述找到可用的示例
在这里插入图片描述
于是将wear_levelling示例代码中关于FatFs的相关代码合理添加进我的项目代码中,但是在运行过程中报错:
在这里插入图片描述
此处报错是在运行到以下函数产生的:
在这里插入图片描述
报错原因:分区表不包含具有给定标签的FATFS分区

此处又关于分区表之类的问题,作为一个渣渣我也很蒙逼,要完全搞懂分区表的内容又要花费很大的精力,于是没有去死抓分区表

于是将自己的工程 menuconfig 与 wear_levelling中的menuconfig 进行比较
发现了两处不同之处:
1.
在这里插入图片描述
在这里插入图片描述
2.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更改后如图所示:
在这里插入图片描述
保存配置后退出

本以为大功告成,结果在编译时报错如下:

在这里插入图片描述
在编译时缺少了文件 partitions.csv ,想着肯定是与分区相关的文件
并在示例工程wear_levelling中找到了 类似文件partitions_example.csv

文件内容如下:
在这里插入图片描述
于是直接把partitions_example.csv 复制到我的工程中,再次尝试编译还是相同的错误

之后在build/build.ninja文件中搜索 partitions相关内容(/partitions +回车)
找到内容如下:
在这里插入图片描述
并在wear_levelling工程中build/build.ninja文件同样搜索,得到结果如下:
在这里插入图片描述
原来是两个工程编译过程中对于该文件的引用名称不同,
于是将我的工程中复制过来的partitions_example.csv 改名为 partitions.csv

再次尝试编译,成功编译,且成功运行

运行后正常挂载,但在储存时调用fopen()打开文件时报错,

在这里插入图片描述
不能打开文件进行写入,经过长时间验证,

想着会不会是示例代码为hello.txt,我的为sta_address.txt,文件名字的问题导致错误
于是将sta_address.txt 改为 address.txt 后可正常打开,确实为文件名的原因

之后再次测试是否为下划线的原因:
将文件名改为 staaddress.txt再次fopen()出错,
但是再次改为sta_adr.txt又正常

	结论:fopen()出错的原因在于文件名,但不是由于下划线,可能是.txt前的名字不能过长.

后来又发现开发文档中存在nsv_get_str()函数,想着只是存小字符串应该用这个就够了,不需要使用fatfs了,花费了两天时间在fatfs运用,但是之后要存储大量数据还是用得着的,也是学习到了一些东西

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值