Oi Se você tiver a sorte de segurar o microcontrolador ESP32 em suas mãos (tive mais sorte e tenho o M5Stack em minhas mãos) da empresa chinesa ESPRESSIF , esse post pode ser útil.

Existe uma situação em que é necessário salvar alguns parâmetros na memória não volátil (por exemplo: conte o número de vezes que o dispositivo foi ligado o tempo todo ou salve as configurações de Wi-Fi). Isso pode ser feito com facilidade usando a biblioteca Preferences .
Declaramos uma instância da classe Preferences e lá veremos ...
A primeira coisa que precisamos fazer é criar um chaveiro chamando o método begin com um par de argumentos (mas apenas com o primeiro): o nome do chaveiro e o sinalizador somente leitura.
Para salvar um valor de string na memória, você precisa passar a chave e o próprio valor para um método cujo nome consiste em duas partes: a primeira é colocada e a segunda é um nome de tipo, por exemplo: String . Tudo é claro e compreensível. Verdadeiro, ainda existem bytes brutos sem fritar para quem ninguém deseja atribuir um tipo. Nesse caso, o método também aceita o terceiro argumento com o número desses bytes. Com este procedimento, tudo parece estar.
Após a escrita do valor, você pode lê-lo usando o método (cujo nome é semelhante ao anterior), onde será obtida a primeira parte. Este método retorna o valor para a chave do tipo correspondente. Lembra do caso de byte? Se você não sabe (ou não se lembra) de quantos bytes há na chave, puxe o método getBytesLength com um único argumento - a chave, ela calculará tudo e retornará a quantidade em size_t .
Se você deseja remover uma chave específica do chaveiro, forneça o único argumento para o método remove .
Você quer trazer um marafet de verdade e limpar todo o grupo ? Chame o método clear sem argumentos!
Quando você quiser concluir o trabalho com o pacote configurável, chame o método final sem argumentos.
Em geral, os seguintes tipos são suportados: Char , UChar , Short , UShort , Int , UInt , Long , ULong , Long64 , ULong64 , Float , Double , Bool , String e Bytes .
Eu entendo o que eu quero alguma coisa código, então aqui está o esboço. Um esboço conta o número de voltas no dispositivo e o exibe no visor:
#include <M5Stack.h> #include <Preferences.h> Preferences preferences; const char* key = "OnOff"; uint32_t count; void setup() { m5.begin(); preferences.begin("MyKeyChain"); count = preferences.getUInt(key); preferences.putUInt(key, count + 1); M5.Lcd.setTextSize(3); M5.Lcd.setTextColor(TFT_WHITE); M5.Lcd.println("Hello, Habr!"); M5.Lcd.setTextSize(2); M5.Lcd.println("M5Stack Turned On:"); M5.Lcd.setTextSize(3); M5.Lcd.setTextColor(TFT_RED); M5.Lcd.println(count); M5.Lcd.setTextColor(TFT_WHITE); M5.Lcd.setTextSize(2); M5.Lcd.println("times"); } void loop() { }
Uma referência à biblioteca é anexada .