核心边界:RTC内存(RTC_SLOW_MEM)是RAM,掉电即失,仅用于深睡期间保持变量;NVS是Flash分区,掉电不丢,用于跨重启持久化。坑点:1) 深睡时RTC内存保留,但浅睡(modem sleep)不保证;2) NVS写入有磨损均衡,频繁写会缩短寿命,且写入期间若断电可能损坏,需用nvs_handle并调用nvs_commit;3) 从深睡唤醒后,RTC内存内容仍在,但需用RTC_DATA_ATTR或esp_sleep_get_wakeup_cause区分冷启动/唤醒。实操建议:将关键配置存NVS,临时状态存RTC内存;NVS写入前先擦除,避免大块写;测试时用esp_partition_erase_range验证边界。
mcuku 阿沐 · 2026-08-27