ESP32非易失性存储整型数据笔记
基于ESP-IDF4.1
1 #include <stdio.h>
2 #include "freertos/FreeRTOS.h"
3 #include "freertos/task.h"
4 #include "esp_system.h"
5 #include "nvs_flash.h"
6 #include "nvs.h"
7
8 void app_main(void)
9 {
10 // 初始化非易失性存储
11 esp_err_t err = nvs_flash_init();
12 if (err == ESP_ERR_NVS_NO_FREE_PAGES || err == ESP_ERR_NVS_NEW_VERSION_FOUND) {
13 // NVS分区被截断,需要擦除并重新初始化
14 ESP_ERROR_CHECK(nvs_flash_erase());
15 err = nvs_flash_init();
16 }
17 ESP_ERROR_CHECK( err );
18
19 // 打开
20 printf("\n");
21 printf("Opening Non-Volatile Storage (NVS) handle... ");
22 nvs_handle_t my_handle;
23 err = nvs_open("storage", NVS_READWRITE, &my_handle);
24 if (err != ESP_OK) {
25 printf("Error (%s) opening NVS handle!\n", esp_err_to_name(err));
26 } else {
27 printf("Done\n");
28
29 // 读取
30 printf("Reading restart counter from NVS ... ");
31 int32_t restart_counter = 0; // NVC中没有设置值得话,需要设置默认值为0
32 err = nvs_get_i32(my_handle, "restart_counter", &restart_counter);
33 switch (err) {
34 case ESP_OK:
35 printf("Done\n");
36 printf("Restart counter = %d\n", restart_counter);
37 break;
38 case ESP_ERR_NVS_NOT_FOUND:
39 printf("The value is not initialized yet!\n");
40 break;
41 default :
42 printf("Error (%s) reading!\n", esp_err_to_name(err));
43 }
44
45 // 写入
46 printf("Updating restart counter in NVS ... ");
47 restart_counter++;
48 err = nvs_set_i32(my_handle, "restart_counter", restart_counter);
49 printf((err != ESP_OK) ? "Failed!\n" : "Done\n");
50
51 //提交写入的值,其它时间提交写入没有保证
52 printf("Committing updates in NVS ... ");
53 err = nvs_commit(my_handle);
54 printf((err != ESP_OK) ? "Failed!\n" : "Done\n");
55
56 // 关闭
57 nvs_close(my_handle);
58 }
59
60 printf("\n");
61
62 // 设备重启
63 for (int i = 10; i >= 0; i--) {
64 printf("Restarting in %d seconds...\n", i);
65 vTaskDelay(1000 / portTICK_PERIOD_MS);
66 }
67 printf("Restarting now.\n");
68 fflush(stdout);
69 esp_restart();
70 }
原文:https://gitee.com/EspressifSystems/esp-idf
ESP32非易失性存储整型数据笔记的更多相关文章
- 使用程序获取整型数据和浮点型数据在内存中的表示---gyy整理
使用程序获取整型数据和浮点型数据在内存中的表示. C++中整型(int).短整型(short int).单精度浮点数(float).双精度浮点数(double)在内存中所占字节数不同,因此取值范围也不 ...
- strtoul (将字符串转换成无符号长整型数)
strtoul strtoul (将字符串转换成无符号长整型数) 相关函数 atof,atoi,atol,strtod,strtol 表头文件 #include<stdlib.h> 定义函 ...
- ESP32省电模式连接WIFI笔记
基于ESP-IDF4.1版本 main.c文件如下: #include <string.h> #include "freertos/FreeRTOS.h" #inclu ...
- 实验12:Problem H: 整型数组运算符重载
Home Web Board ProblemSet Standing Status Statistics Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...
- PHP中IP地址与整型数字互相转换详解
这篇文章主要介绍了PHP中IP地址与整型数字互相转换详解,本文介绍了使用PHP函数ip2long与long2ip的使用,以及它们的BUG介绍,最后给出自己写的两个算法,需要的朋友可以参考下 IP转换成 ...
- c# 计算一个整型数组的平均
一个整型数组的平均: class Program { static void Main(string[] args) { ,,,,,,,,,}; double avg= GetAvg(array); ...
- 使用头文件climits中的符号常量获知整型数据的表数范围---gyy整理
在头文件climits(limits.h)以宏定义的方式定义了各种符号常量来表示各种整型类型表示数的范围,如int的最大最小值,long的最大最小值等. 符号常量 表示 CHAR_BIT char 的 ...
- Java 判断是否为汉字 判断是否为乱码 判断字符串是否为双整型数字 整数 数字
/** * 判断是否为汉字 * * @param str * @return */ public static boolean isGBK(String str) { char[] ch ...
- Java整型数组的最大长度到底有多长?
Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse ...
随机推荐
- .Net RabbitMQ实战指南——客户端开发
开发中关键的Class和Interface有Channel.Connection.ConnectionFactory.Consumer等,与RabbitMQ相关的开发工作,基本上是围绕Connecti ...
- Django(47)drf请求生命周期分析
前言 一般我们写完序列化以后,我们就会开始写视图了,drf中我们一般使用CBV的方式,也就是类视图的方式,最基础的我们会使用from rest_framework.views import API ...
- Elasticserch与Elasticsearch_dsl用法
Elasticserch与Elasticsearch_dsl用法 Elasticsearch_dsl::https://elasticsearch-dsl.readthedocs.io/en/late ...
- redis中AOF和RDB的关闭方法
redis中AOF和RDB的关闭方法 问题:当往redis中导入数据时,有时会出现redis server went away的情况: 原因: 导入的数据量太大,而内存不够(即内存1G,但数据有2 ...
- Selenium八种元素定位方法源码阅读
接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...
- Sql server 多列去重复值,相同的只显示一条数据
CREATE TABLE #tp( headerNo VARCHAR(10), machineNO VARCHAR(10), descrption nVARCHAR(20), artNo VARCHA ...
- 激光雷达Lidar Architecture and Lidar Design(下)
Considerations on Lidar Design 双基地还是单基地? 双轴还是同轴? 几何重叠 向上还是向下看? 关心分散还是只关心时间? 发射器和接收器的波长 是否可调? 发射器和接收器 ...
- HTML基本标签及语法
HTML简介 什么是HTML 本文素材来源于黑马程序员Pink老师 HTML 指的是超文本标记语言(Hyper Text Markup Language) ,它是用来描述网页的一种语言. HTML 不 ...
- Docker开启安全的TLS远程连接
目录 1.1 不安全的远程访问方式 1.1.1 编辑docker.service文件: 1.1.2 重新加载Docker配置生效 1.1.3 警告! 2.1 建立基于TLS数字签名的安全连接 1.1 ...
- 使用Flutter设计一个好看的"我"页面
近期遇到一些很烦的琐事,状态比较down,很多原本计划好的事情都耽搁了,实在是难顶-- 看到后台一直有朋友问怎么博客和公众号没有更新,所以我忙完得闲就来更了! 前言 起因是最近重拾以前的旧项目(业余做 ...