Ошибка при компиляции программы для esp32 с Preferences.h
Я пытаюсь написать программу для Adafruit ESP32-S2 TFT Feather. Однако я не могу заставить его скомпилировать мою программу с использованием <Preferences.h>
. Я не могу заставить Arduino IDE скомпилировать даже пример программы в настройках github. Вот пример программы, которая не компилируется. Если кто-нибудь скажет мне, что здесь не так, я могу применить ее к своей личной программе.
Пример программы:
/*
Startup counter example with Preferences library.
This simple example demonstrates using the Preferences library to store
how many times the device has booted.
*/
#include <Preferences.h>
Preferences preferences;
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println();
// Откройте настройки с пространством имен my-app. Каждый модуль приложения, библиотека и т.д.
// должно использовать имя пространства имен, чтобы предотвратить коллизии имен ключей. Мы откроем хранилище в
// RW-режим (второй параметр должен быть ложным).
// Примечание. Длина имени пространства имен ограничена 15 символами.
preferences.begin("my-app", false);
// Удаляем все настройки в открытом пространстве имен
//предпочтения.очистить();
// Или удалить только ключ счетчика
//настройки.удалить("счетчик");
// Получить значение счетчика, если ключ не существует, вернуть значение по умолчанию 0
// Примечание. Имя ключа ограничено 15 символами.
unsigned int counter = preferences.getUInt("counter", 0);
// Увеличиваем счетчик на 1
counter++;
// Выводим счетчик в Serial Monitor
Serial.printf("Current counter value: %u\n", counter);
// Сохраняем счетчик в настройках
preferences.putUInt("counter", counter);
// Закрыть настройки
preferences.end();
Serial.println("You can restart the device now.");
}
void loop() {}
СООБЩЕНИЕ ОШИБКИ:
WARNING: library Preferences claims to run on esp8266, particle-argon, particle-boron, particle-xenon architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:18:4: error: #error "For ESP32 devices, please use native Preferences library"
#error "For ESP32 devices, please use native Preferences library"
^~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'bool Preferences::begin(const char*, bool)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:289:10: error: '_fs_init' was not declared in this scope
if (!_fs_init()) {
^~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:289:10: note: suggested alternative: '__sinit'
if (!_fs_init()) {
^~~~~~~~
__sinit
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:293:9: error: '_fs_mkdir' was not declared in this scope
if (_fs_mkdir(NVS_PATH)) {
^~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:293:9: note: suggested alternative: 'mkdir'
if (_fs_mkdir(NVS_PATH)) {
^~~~~~~~~
mkdir
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'bool Preferences::clear()':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:321:12: error: '_fs_clean_dir' was not declared in this scope
return _fs_clean_dir(_path.c_str());
^~~~~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:321:12: note: suggested alternative: '_fscanf_r'
return _fs_clean_dir(_path.c_str());
^~~~~~~~~~~~~
_fscanf_r
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'bool Preferences::remove(const char*)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:333:12: error: '_fs_unlink' was not declared in this scope
return _fs_unlink(path.c_str());
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:333:12: note: suggested alternative: 'unlink'
return _fs_unlink(path.c_str());
^~~~~~~~~~
unlink
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'size_t Preferences::putBytes(const char*, const void*, size_t)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:407:9: error: '_fs_exists' was not declared in this scope
if (_fs_exists(path.c_str())) {
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:407:9: note: suggested alternative: 'on_exit'
if (_fs_exists(path.c_str())) {
^~~~~~~~~~
on_exit
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:411:13: error: '_fs_verify' was not declared in this scope
if (_fs_verify(path.c_str(), buf, len)) {
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:418:23: error: '_fs_create' was not declared in this scope
int written = _fs_create(next.c_str(), buf, len);
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:418:23: note: suggested alternative: 'creat'
int written = _fs_create(next.c_str(), buf, len);
^~~~~~~~~~
creat
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:420:13: error: '_fs_rename' was not declared in this scope
if (_fs_rename(next.c_str(), path.c_str())) {
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:420:13: note: suggested alternative: 'basename'
if (_fs_rename(next.c_str(), path.c_str())) {
^~~~~~~~~~
basename
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:427:16: error: '_fs_create' was not declared in this scope
return _fs_create(path.c_str(), buf, len);
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:427:16: note: suggested alternative: 'creat'
return _fs_create(path.c_str(), buf, len);
^~~~~~~~~~
creat
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'bool Preferences::isKey(const char*)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:441:12: error: '_fs_exists' was not declared in this scope
return _fs_exists(path.c_str());
^~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:441:12: note: suggested alternative: 'on_exit'
return _fs_exists(path.c_str());
^~~~~~~~~~
on_exit
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'String Preferences::getString(const char*, String)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:536:15: error: '_fs_get_size' was not declared in this scope
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:536:15: note: suggested alternative: '__getline'
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
__getline
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'size_t Preferences::getBytesLength(const char*)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:555:15: error: '_fs_get_size' was not declared in this scope
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:555:15: note: suggested alternative: '__getline'
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
__getline
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp: In member function 'size_t Preferences::getBytes(const char*, void*, size_t)':
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:565:15: error: '_fs_get_size' was not declared in this scope
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:565:15: note: suggested alternative: '__getline'
int len = _fs_get_size(path.c_str());
^~~~~~~~~~~~
__getline
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:579:12: error: '_fs_read' was not declared in this scope
return _fs_read(path.c_str(), buf, len);
^~~~~~~~
C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:579:12: note: suggested alternative: 'fread'
return _fs_read(path.c_str(), buf, len);
^~~~~~~~
fread
exit status 1
Error compiling for board Adafruit Feather ESP32-S2 TFT.
@Tristan, 👍-3
Обсуждение2 ответа
Похоже:
- вы не установили ядро arduino-ESP32 или
- в Менеджере плат в среде IDE выбрана неправильная целевая плата.
Предположительно, это последнее, поскольку кажется, что это сторонняя библиотека настроек ESP8266, которую система извлекает.
Кажется, первая ошибка подсказывает мне, в чем проблема:
ВНИМАНИЕ: в настройках библиотеки заявлено, что она работает на архитектуре (архитектурах) esp8266, частицы-аргона, частицы-бора, частицы-ксенона и может быть несовместима с вашей текущей платой, которая работает на архитектуре (архитектурах) esp32. C:\Users\xunde\Documents\Arduino\libraries\Preferences\src\Preferences.cpp:18:4: error: #error "Для устройств ESP32 используйте собственную библиотеку настроек" #error "Для устройств ESP32 используйте собственную библиотеку настроек"
Похоже, вы используете TFT Adafruit Feather ESP32-S2.
Я думаю, скорее всего, Arduino IDE настроена на использование ESP8266.
Проверьте Tools->Board->xxx, чтобы убедиться, что вы загрузили правильные библиотеки для вашего ESP32. Возможно, вам потребуется выбрать "менеджер плат" и найдите подходящие библиотеки для вашего микроконтроллера.
При правильно настроенном микроконтроллере вы должны увидеть, что эта проблема исчезнет, но нет никаких гарантий, что никаких последующих проблем не будет!
почему IDE выдает предупреждение о том, что библиотека не для esp32, когда в меню Tools выбран esp8266?, @Juraj
Хороший вопрос - посмотрите на ошибки - это был намек, который я получил. Может быть, начать с новой установки / чистой рабочей области, чтобы удалить все, что висит вокруг, чего там не должно быть., @Insecurity
а может, просто может быть, мой комментарий под вопросом был прав, @Juraj
@juraj, да, устаревшие IDE/метаданные, несинхронизированные библиотеки и т. д. вполне возможны, отсюда и мое предостережение внизу моего комментария. про отсутствие гарантий Мы, наверное, никогда не узнаем наверняка!, @Insecurity
- Контакты ESP32 не помещаются в беспаянную макетную плату
- После восстановления смещения BNO055 на датчике все значения калибровки равны 0.
- Увеличить частоту дискретизации на плате ESP32
- Как масштабировать растровое изображение (массив uint8_t) в Arduino?
- Adafruit esp32 Feather не удалось скомпилировать
- Чтение текста построчно с SD
- Arduino создает массив Json с двойными значениями и 2 десятичными знаками
- Не удается успешно реализовать синглтон
Вы нашли время, чтобы прочитать сообщение об ошибке?, @Majenko
IDE должна автоматически использовать библиотеку Preferences с платформы esp32. год назад была версия IDE, в которой были неправильные приоритеты при выборе библиотеки., @Juraj