ESP32 编译错误:'class EspClass' has no member named 'flashErase'
ESP32 编译错误:'class EspClass' has no member named 'flashErase'
如果你在编译 ESP32 代码时遇到以下错误:
C:\Users\anjiz\Documents\Arduino\ESP32_S3_ESPmodbus_Server\ESP32_S3_ESPmodbus_Server.ino:22:11: error: 'class EspClass' has no member named 'flashErase'; did you mean 'flashWrite'?
if (ESP.flashErase()) {
^~~~~~~~~~
flashWrite
exit status 1
Compilation error: 'class EspClass' has no member named 'flashErase'; did you mean 'flashWrite'?
这意味着你在代码中使用了不存在的函数 flashErase()。ESP32 库中没有名为 flashErase() 的函数。
如何正确擦除 ESP32 Flash 存储器?
要擦除 ESP32 的 Flash 存储器,你需要使用 esp_partition_erase_range() 函数。以下是修正后的示例代码:
#include <esp_partition.h>
void setup() {
Serial.begin(115200); // 初始化串口通信
delay(2000); // 等待2秒钟,确保串口打开并准备就绪
}
void loop() {
Serial.println("Erasing Flash..."); // 输出擦除Flash的提示信息
// 获取默认分区并擦除整个Flash存储器
const esp_partition_t* partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_ANY, NULL);
if (partition) {
esp_err_t err = esp_partition_erase_range(partition, 0, partition->size);
if (err == ESP_OK) {
Serial.println("Flash erased successfully."); // 输出擦除成功的提示信息
} else {
Serial.println("Failed to erase Flash."); // 输出擦除失败的提示信息
}
}
// 循环结束,不会重新擦除Flash
while (1);
}
这段代码首先获取默认的应用程序分区,然后使用 esp_partition_erase_range() 函数擦除整个分区。如果擦除成功,则会输出 "Flash erased successfully." 的提示信息;如果擦除失败,则会输出 "Failed to erase Flash." 的提示信息。代码会在擦除完成后进入无限循环,以防止重新擦除 Flash。
注意: 擦除 Flash 会导致所有数据丢失。在执行此代码之前,请确保你已经备份了重要的数据。
原文地址: http://www.cveoy.top/t/topic/f3m 著作权归作者所有。请勿转载和采集!