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 ...
随机推荐
- 在 Kubernetes 集群在线部署 KubeSphere
https://github.com/kubesphere/ks-installer/blob/master/README_zh.md https://kubesphere.com.cn/docs/i ...
- 第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难
第12讲 | TCP协议(下):西行必定多妖孽,恒心智慧消磨难 如何做个靠谱的人? 有问有答,任务发送和接收有记录,完成有反馈. 如何实现一个靠谱的协议? TCP 协议使用的也是同样的模式.为了保证顺 ...
- 日常Bug排查-消息不消费
日常Bug排查-消息不消费 前言 日常Bug排查系列都是一些简单Bug排查,笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材_. Bug现场 某天下午,在笔者研究某个问题正high的时候.开 ...
- DHCP与DHCP中继
DHCP原理与配置 1. DHCP应用场景 2. DHCP报文类型 3. DHCP工作原理 4. IP地址获取与释放 5. DHCP中继配置 1. DHCP应用场景 在大型企业网络中,会有大量的主机或 ...
- 80个Python练手项目列表
80个Python练手项目列表 我若将死,给孩子留遗言,只留一句话:Repetition is the mother of all learning重复是学习之母.他们将来长大,学知识,技巧.爱情 ...
- GO学习-(19) Go语言基础之网络编程
Go语言基础之网络编程 现在我们几乎每天都在使用互联网,我们前面已经学习了如何编写Go语言程序,但是如何才能让我们的程序通过网络互相通信呢?本章我们就一起来学习下Go语言中的网络编程. 关于网络编程其 ...
- cuDNN 功能模块解析
Abstract 本cuDNN 8.0.4开发人员指南概述了cuDNN功能,如可自定义的数据布局.支持灵活的dimension ordering,striding,4D张量的子区域,这些张量用作其所有 ...
- JMeter使用教程2——MySQL压测
之前写过一篇JMeter使用教程,只是介绍了http请求的压力测试,想到MySQL的测试也挺必要的,于是写下这篇记录一下.如果不知道怎么下载和安装,可以看一下上一篇关于JMeter的文章,地址是:ht ...
- APP的闪退和无响应
1.app闪退(crash,崩溃):程序异常退出不再运行 闪退的原因: a.程序内部逻辑错误(因算法或网络连接引起的异常,或是为捕捉到的错误) b.系统自身异常:一般自定ROM或刷机后比较常见 c.运 ...
- 【UG二次开发】获取系统信息UF_ask_system_info
获取系统信息可以使用这个函数UF_ask_system_info 下面是例子: 1 extern DllExport void ufsta(char *param, int *returnCode, ...