如何解决使用 ESP-IDF 在 ESP32 上深度睡眠的 RTC 静态内存
我使用 ESP32 内部 RTC 上的 8KB 静态 RAM 来保存少量传感器数据,以通过降低传输频率来降低功耗。但即使是简单的示例代码,我也不走运:
RTC_DATA_ATTR uint32_t testValue = 0;
{
ESP_LOGE(TAG,"testValue = %d",testValue++);
...
}
在监视器中,我可以第一次看到该值为 0,但随后就有人猜测了。
E (109) app_main: testValue = 0
...
...
E (109) app_main: testValue = -175962388
编辑
还尝试了属性:
RTC_NOINIT_ATTR uint32_t testValue = 0;
我做错了什么?
解决方法
我从其他渠道收到了我想分享的答案。解决方案是设置:
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM,ESP_PD_OPTION_ON);
esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM,ESP_PD_OPTION_ON);
因此启用了 RTC 内存区域。就我而言,我在代码的另一个区域(深度睡眠电源管理代码)中专门禁用了它们。该解决方案不会显着影响深度睡眠功耗 ~ 10 uA。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。