esp32 使用nvs進行軟體復位

2021-10-24 20:13:45 字數 1755 閱讀 6028

1、硬體:一塊esp32最小系統板

2、程式原始碼

#include #include #include #include "freertos/freertos.h"

#include "freertos/task.h"

#include "freertos/event_groups.h"

#include "nvs.h"

#include "esp_log.h"

#include "nvs_flash.h"

#include "esp_system.h"

#include static const char *tag = "nvs_log";

#define restart_sta_space "sta" //空間

#define restart_sta_key "key" //鍵

void restarttask(void *arg)

//開啟乙個nvs讀寫空間

err = nvs_open(restart_sta_space, nvs_readwrite, &restarttask_nvshandle);

if (err != esp_ok)

//一上電,開機進來,restart_sta_key鍵是不存在的,也就是沒有值

//restart_sta_key :鍵 restartsta:值

//讀取nvs函式,引數一返回控制代碼,引數二儲存資料的鍵值,引數三儲存資料的指標

err = nvs_get_u8(restarttask_nvshandle,restart_sta_key,&restartsta); //讀取空間json鍵值對

if(err == esp_err_nvs_not_found || restartsta == 2) //判斷讀取出來的返回資料

nvs_set_u8(restarttask_nvshandle,restart_sta_key,1); //restart_sta_key寫入數值1

nvs_close(restarttask_nvshandle); //關閉命名空間

esp_restart(); //軟體復位

} else if(restartsta == 1) //判讀讀取出來的restartsta是否為1

nvs_set_u8(restarttask_nvshandle,restart_sta_key,0);//restart_sta_key寫入乙個0

nvs_close(restarttask_nvshandle);//關閉命名空間

esp_restart();//軟體復位

} nvs_set_u8(restarttask_nvshandle,restart_sta_key,2); //restart_sta_key寫入乙個2,下一次開機回到上面的if(err == esp_err_nvs_not_found || restartsta == 2)

nvs_close(restarttask_nvshandle); //關閉命名空間

vtaskdelay(1000/porttick_period_ms); //一定的1000ms延時

vtaskdelete(null); //任務刪除,完成開機復位操作

}

3、介紹:

非易失性儲存(non-volatile storage)稱為nvs,優點是不需要直接操作flash位址

具體拓展性使用還需跟根據官方api和文件進行操作。

4、程式解析:本程式主要使用nvs,硬體上電以後進行兩次軟體復位的操作。

ESP32 學習日誌(5) NVS

非易失性儲存 nvs 庫主要用於在 flash 中儲存鍵值格式的資料。本文件將詳細介紹 nvs 在esp32中的使用。nvs 的操作物件為鍵值對,其中鍵是 ascii 字串,當前支援最大鍵長為 15 個字元,值可以為以下幾種型別 include nvs flash.h void main void ...

ESP32使用micropython心得

本次環境使用工具pycharm,需依次安裝 esptool,adafruit ampy。在pycharm上安裝 intellij micropython 外掛程式 乙個命令列工具,用於與esp8266和esp32微控制器中的rom引導引導程式通訊。允許訪問快閃儲存器韌體,讀回韌體,查詢晶元引數等。使...

使用MicroPython開發ESP32網路開發

micropython庫分為三部分。一部分是把基礎python中常用的庫結合硬體特典重新實現的,為了做區分這部分庫在命名上稍有改變,比如原版的 json 模組在micropython中改名為 ujson 不過在使用的時候用 json 和 ujson 兩個名稱都可以。micropython庫第二部分是...