在ESP32低功耗设计中,RTC内存(RTC_SLOW_MEM)与NVS分区是两种截然不同的存储方案。RTC内存由RTC域供电,在Deep Sleep下保持数据,读写速度极快(纳秒级),但容量有限(8KB)且掉电(如拔电池)即丢失。NVS基于Flash,支持掉电保存,但写入有擦写寿命(约10万次)且每次写入需耗时(毫秒级)。实战建议:对于频繁更新的唤醒计数、传感器校准值等,优先用RTC内存,配合RTC_NOINIT_ATTR声明,避免初始化覆盖;对于需长期保存的配置参数(如WiFi凭据、用户设置),用NVS,且注意批量写入、磨损均衡。关键点:Deep Sleep唤醒后,RTC内存内容保留,但需在唤醒源判断后手动恢复上下文;NVS则需初始化nvs_flash_init。若需兼顾,可将关键数据双写:RTC内存做快速缓存,NVS做持久备份。
mcuku 阿沐 · 2026-08-27