我一直以为RP2040的系统是无法使用文件系统的,直到有一天,我无意中发现Arduino的芯片设置栏位中有一个奇怪的选项:
我很好奇的让DeepSeek给我找了一下资料, 然后它告诉我,这是一个文件系统的预分配方案,我当时就惊讶了,我一直以为RP2040这种芯片是无法使用文件系统的。结果,突然被惊喜砸中,因为我一直想存储一些数据,因为一直以为RP2040无法使用文件系统,甚至想通过网络通讯将数据存在其他地方。于是,让DeepSeek给我深扒了一下如何使用这个文件系统。它告诉我需要用一个叫做LittleFS的库来操作,属于那种极简版的文件系统。这个库的用法大致如下:
if( LittleFS.begin() )
{
File file = LittleFS.open("/config.json", "r");
if( file )
{
String json = file.readString();
if( json.isEmpty() == false )
{
JsonDocument doc;
DeserializationError error = deserializeJson( doc, json.c_str() );
if( error )
{
Serial.printf( "deserializeJson() failed: %s\n", error.f_str() );
}
else
{
current = doc["current"];
Serial.printf( "current: %f\n", current );
}
}
file.close();
}
}
上面的代码演示了如何初始化文件系统,加载并读取一个文件的内容。LittleFS在使用前必须调用 begin() 函数。加载非常简单,open之后,读取内容就行了。这儿同时也用了 ArduinoJson,可以在RP2040使用JSON,当然受限于内存,不能用太复杂的JSON字符串,对付一些配置什么的,还是没问题。
JsonDocument doc; // 根据数据大小调整内存
doc["current"] = current;
String json;
size_t bytes = serializeJson( doc, json );
if( bytes == 0 )
{
Serial.printf( "serializeJson() failed.\n" );
}
else
{
// 写入
File file = LittleFS.open("/config.json", "w");
if( file )
{
file.print( json );
file.close();
Serial.printf( "Write config.json ok: %s\n", json.c_str() );
}
}
上面的代码演示了如何存储JSON字符串到文件系统。是不是非常简单?