ESP32非易失性存储整型数据笔记
2025-09-10 来源:cnblogs
基于ESP-IDF4.1
1 #include
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('Donen');
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('Donen');
36 printf('Restart counter = %dn', 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' : 'Donen');
50
51 //提交写入的值,其它时间提交写入没有保证
52 printf('Committing updates in NVS ... ');
53 err = nvs_commit(my_handle);
54 printf((err != ESP_OK) ? 'Failed!n' : 'Donen');
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 }
上一篇:ESP32存储blog笔记
下一篇:ESP32智能配网笔记
- ESP32/8266固件备份方法
- upyOS:基于 MicroPython 的模块化操作系统,兼容 ESP32、RP2040 等微控制器
- ESP32与STM32哪个更适合初学者?问题解析与对比
- STM32与ESP32核心应用场景解析及PCB设计实践(深度探讨)
- ESP32与STM32:比较并非明智之举
- ESP32与STM32:性能对比分析及选型指南
- STM32与ESP32:核心差异详解
- 串口、并口、USB、UART及RS232/RS485接口与ESP32、STM32的应用解析
- ESP32音频输入-MAX4466,MAX9814,SPH0645LM4H,INMP441
- ESP32 ADF windows开发环境搭建 适配ADF到ESP32A1S
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 蓝牙信道探测技术原理与开发套件实践
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析




