在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ESP32學習筆記:NVS分區(qū)永久保存數據

CHANBAEK ? 來源:跳動的字節(jié) ? 作者:曉宇 ? 2023-07-15 16:14 ? 次閱讀

今天我們來說說ESP32 for Arduino NVS分區(qū)永久保存數據。

ESP32 for Arduino NVS分區(qū)

上一節(jié)我們講了整個ESP32的存儲分布,其中有一個NVS分區(qū),這個分區(qū)專門用來存儲數據的,系統在復位或斷電后數據仍然存在,我們可以使用Preferences庫保存網絡SSID,密碼,一些閾值或者IO的最后狀態(tài)等。

在保存數據的時候,我們推薦使用Preferences庫,不推薦使用EEPROM庫。

使用Preferences庫保存的數據結構如下,也叫鍵值對:

namespace {
  key:value
}

一個命名空間中也可以有不同的鍵:

namespace {
  key1: value1
  key2: value2
}

實際使用中,我們可以用來保存網絡憑證:

credentials {
  ssid: "your_ssid"
  pass: "your_pass"
}

也可以有多個具有相同鍵的命名空間(但每個鍵都有其值):

namespace1{
  key:value1
}
namespace2{
  key:value2
}

使用Preferences庫時,應該定義要保存的數據類型。如果想讀取該數據,則必須知道保存的數據類型,也就是說,寫入和讀取的數據類型應該相同。

支持以下數據類型的保存:char、char、short、Ushort、int、Uint、long、Ulong、long64、Ulong64、float、double、bool、字符串和字節(jié)。

Preferences庫函數說明

首先包含頭文件

Preferences 庫

然后定義一個實例

Preferences preferences;

打開一個命名空間

begin方法打開一個帶有定義命名空間的“儲存空間”,參數為false代表我們在讀/寫模式下使用,為true代表以只讀的方式打開或創(chuàng)建命令空間,命名空間名稱最多為15個字符。

preferences.begin("my-app", false);

清除preferences

從打開的命名空間中刪除一個鍵。

preferences.remove(key);

關閉preferences

使用end方法在打開的命名空間下關閉preferences

preferences.end();

放置一個k-v

圖片

獲取一個k-v

圖片

刪除命名空間

在Preferences 庫中,并沒有完全刪除命令空間的方法,我們存儲很多數據之后,nvs分區(qū)可能就滿了,所以我們想要完全擦除nvs分區(qū),可以使用以下程序運行一次:

#include < nvs_flash.h >

void setup() {
  nvs_flash_erase(); // 擦除NVS分區(qū)
  nvs_flash_init();  // 初始化NVS分區(qū)
  while(true);
}

void loop() {

}

程序示例

我們直接打開Example中的例子,StartCounter

/*
 ESP32 startup counter example with Preferences library.

 This simple example demonstrates using the Preferences library to store how many times the ESP32 module has booted. 
 The Preferences library is a wrapper around the Non-volatile storage on ESP32 processor.

 created for arduino-esp32 09 Feb 2017 by Martin Sloup (Arcao)
 
 Complete project details at https://RandomNerdTutorials.com/esp32-save-data-permanently-preferences/
*/

#include < Preferences.h >

Preferences preferences;

void setup() {
  Serial.begin(115200);
  Serial.println();

  // Open Preferences with my-app namespace. Each application module, library, etc
  // has to use a namespace name to prevent key name collisions. We will open storage in
  // RW-mode (second parameter has to be false).
  // Note: Namespace name is limited to 15 chars.
  preferences.begin("my-app", false);

  // Remove all preferences under the opened namespace
  //preferences.clear();

  // Or remove the counter key only
  //preferences.remove("counter");

  // Get the counter value, if the key does not exist, return a default value of 0
  // Note: Key name is limited to 15 chars.
  unsigned int counter = preferences.getUInt("counter", 0);

  // Increase counter by 1
  counter++;

  // Print the counter to Serial Monitor
  Serial.printf("Current counter value: %un", counter);

  // Store the counter to the Preferences
  preferences.putUInt("counter", counter);

  // Close the Preferences
  preferences.end();

  // Wait 10 seconds
  Serial.println("Restarting in 10 seconds...");
  delay(10000);

  // Restart ESP
  ESP.restart();
}

void loop() {

}

這個例子增加了一個counter鍵,每次運行都加一,我們在按下復位鍵之后,可以看到下面你的現象,數據保存起來了。

圖片

Preferences庫很方便保存鍵:值對。即使在重置 ESP32 或斷電后,閃存中保存的數據仍然存在。

感謝大家,關于ESP32的學習,希望大家Enjoy!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 存儲
    +關注

    關注

    13

    文章

    4342

    瀏覽量

    86034
  • 網絡
    +關注

    關注

    14

    文章

    7591

    瀏覽量

    89056
  • EEPROM
    +關注

    關注

    9

    文章

    1028

    瀏覽量

    81808
  • 數據結構
    +關注

    關注

    3

    文章

    573

    瀏覽量

    40184
  • ESP32
    +關注

    關注

    18

    文章

    974

    瀏覽量

    17445
收藏 人收藏

    評論

    相關推薦

    請問esp32s3如何保存突然停電時的數據?

    描述:我們設計的一塊板子,電源處有一塊小電容,在斷電前,還能運行1段時間(時間很短,比如2s) 需求:我們想在這2s時間內,保存一些緊急數據nvs中(數據不會很多),請問是否可以實現
    發(fā)表于 06-06 07:38

    ESP32-S3-WROMM-1U同時讀取nvs和寫ota分區(qū)會造成系統異常嗎?

    ESP32-S3-WROMM-1U 同時讀取nvs和寫ota分區(qū),造成系統異常?
    發(fā)表于 06-07 07:48

    ESP32-S3無法使用NVS分區(qū)是怎么回事?

    用的ESP32-S3-DevKitC-1 N16R8開發(fā)板,使用官方示例程測試也無法寫入NVS,使用的版本是IDF4.4,
    發(fā)表于 06-18 08:13

    基于PlatfromIO-Arduino的ESP32-Flash分區(qū)

    ESP32-Flash分區(qū),基于PlatfromIO-Arduino在PlatformIO中添加分區(qū)表在工程根目錄下新建partition.csv文件在工程下的platformio.ini文件中添加
    發(fā)表于 01-26 08:00

    ESP32ESP-IDF學習筆記

    ESP32ESP-IDF 學習筆記(六)【I2C數據總線(I2C)】文章目錄ESP32
    發(fā)表于 02-22 07:30

    使用ESP32-S3無法使用NVS分區(qū)是為什么?

    用的ESP32-S3-DevKitC-1 N16R8開發(fā)板,使用官方示例程測試也無法寫入NVS,使用的版本是IDF4.4,
    發(fā)表于 02-15 06:21

    如何將ESP-IDF引導加載程序與用于NVSESP32-Arduino代碼一起使用?

    的 Arduino 代碼并將其閃存Stage 2 - ESP32-Arduino 代碼我當前的問題是無論 NVS 是否已加密,我都無法從 NVS 分區(qū)寫入/讀取,我什至嘗試禁用閃存加密
    發(fā)表于 04-13 08:11

    ESP32 開發(fā)筆記(四)LVGL控件學習 Window 窗口控件 X

    ESP32 開發(fā)筆記(四)LVGL控件學習 Window 窗口控件 X
    發(fā)表于 11-14 09:06 ?6次下載
    <b class='flag-5'>ESP32</b> 開發(fā)<b class='flag-5'>筆記</b>(四)LVGL控件<b class='flag-5'>學習</b> Window 窗口控件 X

    ESP32驅動AD7705

    wifi配置信息保存nvs_flash,實現掉電重新啟動直接連入wifi(已完成)3、idf v4.0 調試esp-aliyun-master 生成對應的 NVS
    發(fā)表于 11-23 17:51 ?15次下載
    <b class='flag-5'>ESP32</b>驅動AD7705

    ESP32-Flash分區(qū),基于PlatfromIO-Arduino

    ESP32-Flash分區(qū),基于PlatfromIO-Arduino在PlatformIO中添加分區(qū)表在工程根目錄下新建partition.csv文件在工程下的platformio.ini文件中添加
    發(fā)表于 12-02 12:21 ?13次下載
    <b class='flag-5'>ESP32</b>-Flash<b class='flag-5'>分區(qū)</b>,基于PlatfromIO-Arduino

    [ESP8266學習筆記]components_nvs 非易失性存儲 Non-Volatile Storage(NVS),保存數據到flash

    [ESP8266學習筆記]components_nvs 非易失性存儲 Non-Volatile Storage(NVS),
    發(fā)表于 12-02 12:51 ?11次下載
    [<b class='flag-5'>ESP</b>8266<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>]components_<b class='flag-5'>nvs</b> 非易失性存儲 Non-Volatile Storage(<b class='flag-5'>NVS</b>),<b class='flag-5'>保存</b><b class='flag-5'>數據</b>到flash

    [ESP32]學習筆記02

    [ESP32學習筆記02]使用ViusalStudio2017開發(fā)ESP32、按鍵輸入檢測前言一、安裝Visual Studio 2017二、配置開發(fā)環(huán)境1.安裝ViusalGDB2.
    發(fā)表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02

    [ESP32]學習筆記04

    Analog-to-Digital Converter(模數轉換器)的使用今天我們學習ESP32提供的ADC外設的使用,ESP32的每個ADC單元都支持兩種模式,單次讀取和連續(xù)讀取(DMA),本次
    發(fā)表于 12-22 19:02 ?9次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04

    SPI主線協議——ESP32學習筆記

    目錄SPI主線協議——ESP32學習筆記零、前言一、什么是SPI?二、通信過程?三、極性和相位四、總結SPI主線協議——ESP32學習
    發(fā)表于 12-22 19:23 ?18次下載
    SPI主線協議——<b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    ESP32學習筆記:WiFi

    今天我們來說說ESP32 的WiFi。
    的頭像 發(fā)表于 07-15 16:20 ?4130次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:WiFi
    主站蜘蛛池模板: 五月激情六月| 中文字幕色婷婷在线精品中| 天天干天天操天天透| 亚洲福利视频网址| 婷婷久久综合九色综合九七| 亚洲电影天堂网| 久久国产热视频| 国产热| 亚洲天天更新| 三级在线网站| 美国一级毛片免费看成人| 三级在线观看视频| 人人人人澡| 黄色三级在线看| 亚洲乱亚洲乱妇13p| 激情视频综合网| 久久黄色网| 色惰网站| 操视频网站| 水果视频色版| 亚洲 欧美 另类 吹潮| 日日夜夜噜| 精品三级视频| 国产三级日本三级日产三| 又黄又粗暴的120秒免费gif视频| freesexvideo性欧美2| 天天弄天天模| 35pao免费视频| 欧美xxx69| 99久久精品免费精品国产| 色婷婷色丁香| 青草视频在线观看国产| 激情五月五月婷婷| 天天做天天干| 免费一级毛片清高播放| 免费看欧美理论片在线| 黄色网络在线观看| 免费色黄网站| 日韩成人毛片高清视频免费看| 黄色a网| 91激情网|