如何在 ESP32 上的 Arduino 中初始化 LittleFS (PlatformIO)

要在 ESP32 上使用 Arduino 附带的 LittleFS 库,使用以下函数

init_filesystem.cpp
#include <LittleFS.h>

bool filesystemOK = false;

void InitFilesystem() {
  // 初始化 LittleFS
  if (!LittleFS.begin(false /* false: Do not format if mount failed */)) {
    Serial.println("Failed to mount LittleFS");
    if (!LittleFS.begin(true /* true: format */)) {
      Serial.println("Failed to format LittleFS");
    } else {
      Serial.println("LittleFS formatted successfully");
      filesystemOK = true;
    }
  } else { // Initial mount success
    filesystemOK = true;
  }
}

此外,你需要配置 PlatformIO 使用 LittleFS:

platformio.ini
board_build.filesystem = littlefs

现在,在 setup() 中,调用

init_filesystem_call.cpp
InitFilesystem();

如果你在包含 LittleFS.h 时遇到错误,你可能需要在 platformio.ini 中显式使用最新的 arduino-esp32 版本:

platformio_platform_packages.ini
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.5

如果你绝对需要使用不支持 LittleFS 的旧 arduino-esp32 版本,你可以使用 lorol/LittleFS 库,如我们之前的文章所述:如何使用 lorol/LittleFS 库在 ESP32 上的 PlatformIO 中初始化 LittleFS

完整 platformio.ini 示例:

platformio_example.ini
[env:esp32dev]
platform = espressif32
platform_packages = framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#2.0.5
board = esp32dev
framework = arduino
board_build.filesystem = littlefs
monitor_speed = 115200

Check out similar posts by category: Arduino, Embedded, ESP8266/ESP32, PlatformIO