mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
85 lines
2.7 KiB
Markdown
85 lines
2.7 KiB
Markdown
| Supported Targets | ESP32 | ESP32-C3 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
|
|
| ----------------- | ----- | -------- | -------- | -------- | -------- |
|
|
|
|
# Non-Volatile Storage (NVS) Read and Write Example
|
|
|
|
(See the README.md file in the upper level 'examples' directory for more information about examples.)
|
|
|
|
This example demonstrates how to read and write a single integer value using NVS.
|
|
|
|
In this example, value which is saved holds the number of ESP32 module restarts. Since it is written to NVS, the value is preserved between restarts.
|
|
|
|
Example also shows how to check if read / write operation was successful, or certain value is not initialized in NVS. Diagnostic is provided in plain text to help track program flow and capture any issues on the way.
|
|
|
|
Detailed functional description of NVS and API is provided in [documentation](https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/storage/nvs_flash.html).
|
|
|
|
Check another example *storage/nvs_rw_blob*, which shows how to read and write variable length binary data (blob).
|
|
|
|
## How to use example
|
|
|
|
### Hardware required
|
|
|
|
This example does not require any special hardware, and can be run on any common development board.
|
|
|
|
### Build and flash
|
|
|
|
Build the project and flash it to the board, then run monitor tool to view serial output:
|
|
|
|
```
|
|
idf.py -p PORT flash monitor
|
|
```
|
|
|
|
(To exit the serial monitor, type ``Ctrl-]``.)
|
|
|
|
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.
|
|
|
|
## Example Output
|
|
|
|
First run:
|
|
```
|
|
Opening Non-Volatile Storage (NVS) handle... Done
|
|
Reading restart counter from NVS ... The value is not initialized yet!
|
|
Updating restart counter in NVS ... Done
|
|
Committing updates in NVS ... Done
|
|
|
|
Restarting in 10 seconds...
|
|
Restarting in 9 seconds...
|
|
Restarting in 8 seconds...
|
|
Restarting in 7 seconds...
|
|
Restarting in 6 seconds...
|
|
Restarting in 5 seconds...
|
|
Restarting in 4 seconds...
|
|
Restarting in 3 seconds...
|
|
Restarting in 2 seconds...
|
|
Restarting in 1 seconds...
|
|
Restarting in 0 seconds...
|
|
Restarting now.
|
|
```
|
|
|
|
Subsequent runs:
|
|
|
|
```
|
|
Opening Non-Volatile Storage (NVS) handle... Done
|
|
Reading restart counter from NVS ... Done
|
|
Restart counter = 1
|
|
Updating restart counter in NVS ... Done
|
|
Committing updates in NVS ... Done
|
|
|
|
Restarting in 10 seconds...
|
|
Restarting in 9 seconds...
|
|
Restarting in 8 seconds...
|
|
Restarting in 7 seconds...
|
|
Restarting in 6 seconds...
|
|
Restarting in 5 seconds...
|
|
Restarting in 4 seconds...
|
|
Restarting in 3 seconds...
|
|
Restarting in 2 seconds...
|
|
Restarting in 1 seconds...
|
|
Restarting in 0 seconds...
|
|
Restarting now.
|
|
```
|
|
|
|
Restart counter will increment on each run.
|
|
|
|
To reset the counter, erase the contents of flash memory using `idf.py erase-flash`, then upload the program again as described above.
|