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 ...
随机推荐
- ffmpeg安装之mac安装
转发自白狼栈:查看原文 关于ffmpeg的安装,有的人可能要折腾很久,甚至折腾一个礼拜,究其原因,基本都是编译安装惹的祸. 我们提供4种安装方式,最复杂的莫过于centos7上的编译安装. ffmpe ...
- Golang基础编程(一)-基本结构、数据类型、流程语句
一.Go语言简介 简洁,高效,并发 二.语言特性 ·简洁,只有25个关键字 ·函数多返回值 ·匿名函数和闭包 ·类型和接口 ·自动垃圾回收 ·编译迅速 ·并发编程 25个关键字: 三.Go程序基本结构 ...
- 痞子衡嵌入式:改动i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能会造成系统异常
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是改动i.MXRT1xxx里IOMUXC_GPR寄存器保留位可能会造成系统异常. 痞子衡的嵌入式技术交流群里有一位非常活跃的朋友(网名:文 ...
- CUDA 11功能清单
CUDA 11功能清单 基于NVIDIA Ampere GPU架构的新型NVIDIA A100 GPU在加速计算方面实现了最大的飞跃.A100 GPU具有革命性的硬件功能,CUDA 11与A100一起 ...
- MindInsight训练可视整体设计介绍
MindInsight训练可视整体设计介绍 MindInsight是MindSpore的可视化调试调优组件.通过MindInsight可以完成训练可视.性能调优.精度调优等任务. 训练可视功能主要包括 ...
- Timer定时器开发
Timer定时器开发 定时器的作用是不占线程的等待一个确定时间,同样通过callback来通知定时器到期. 参考:https://github.com/sogou/workflow 定时器的创建 同样 ...
- robotframework常用关键字
robotframework关键字 可以将关键字看作是处理数据的方法.robotframework的关键字和测试数据组成了测试用例. robotframework关键字包括系统关键字和用户关键字.用户 ...
- android小技巧之点击两次退出活动
通常在主活动中可以设置连击退出程序,下面通过代码来实现这一功能: @Override//按两次back键退出public boolean onKeyDown(int keyCode, KeyEvent ...
- ipconfig提示不是内部或外部命令
昨天因为公司断网,重新连上之后ip地址变了,于是就想看看现在的ip是什么 输入ipconfig,回车 提示不是外部和内部命令,是因为系统在本路径下未找到ipconfig.exe系统,所以无法识别ipc ...
- docker安装nextcloud私人网盘,开启https配置证书
docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...