在基于 ESP32 的系统中,我们可以使用 NVS(Non-Volatile Storage,非易失性存储)来实现系统配置参数的掉电存储和读写。NVS 是 ESP32 提供的一种存储机制,允许我们将键值对数据存储在闪存中,即使设备掉电,数据也不会丢失。
以下是一个简单的 C 程序例程,展示了如何使用 NVS 进行系统配置参数的读写:
#include <stdio.h>
#include "nvs_flash.h"
#include "nvs.h"
// 定义一个函数用于写入配置参数
esp_err_t write_config_parameter(const char* key, int value) {
// 打开 NVS 命名空间
nvs_handle_t my_handle;
esp_err_t err = nvs_open("storage", NVS_READWRITE, &my_handle);
if (err != ESP_OK) {
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
return err;
}
// 写入参数
err = nvs_set_i32(my_handle, key, value);
if (err != ESP_OK) {
printf("Error (%s) writing to NVS!\n", esp_err_to_name(err));
} else {
// 提交更改
err = nvs_commit(my_handle);
if (err != ESP_OK) {
printf("Error (%s) committing to NVS!\n", esp_err_to_name(err));
}
}
// 关闭 NVS 句柄
nvs_close(my_handle);
return err;
}
// 定义一个函数用于读取配置参数
esp_err_t read_config_parameter(const char* key, int* value) {
// 打开 NVS 命名空间
nvs_handle_t my_handle;
esp_err_t err = nvs_open("storage", NVS_READONLY, &my_handle);
if (err != ESP_OK) {
printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
return err;
}
// 读取参数
err = nvs_get_i32(my_handle, key, value);
switch (err) {
case ESP_OK:
printf("Read parameter %s:
ESP32实现键值对存储读写C程序例程

最低0.47元/天 解锁文章
3500

被折叠的 条评论
为什么被折叠?



