ESP32 支持在人深度睡眠碰他会醒吗时運行“人深度睡眠碰他会醒吗唤醒存根”芯片唤醒后立即运行此功能 - 在任何正常初始化,引导加载程序或 ESP-IDF 代码运行之前唤醒存根运行後,SoC 可以返回休眠状态或继续正常启动 ESP-IDF
人深度睡眠碰他会醒吗唤醒存根代码被加载到“RTC 快速存储器”中,它使用的任何数据也必须加载箌 RTC 存储器中RTC 存储区域在人深度睡眠碰他会醒吗期间保持其内容,
必须仔细编写唤醒存根代码:
esp-idf 中的唤醒存根的函数 esp_wake_deep_sleep()
只要 SoC 从人深度睡眠碰他会醒吗中唤醒,该函数就会运行esp-idf 中提供了此函数的默认版本,但默认函数是弱链接的因此如果您的应用程序包含名为 esp_wake_deep_sleep()
的函数,那么这将覆盖这个默认版本
没有必要在您的应用程序中实现 esp_wake_deep_sleep()
以使用人深度睡眠碰他会醒吗。只有你想在唤醒时立即有特殊行为才有必要
如果要在运行时在不同的人深度睡眠碰他会醒吗存根之间进行交换,也可以通过调用 esp_set_deep_sleep_wake_stub()
函数来执行此操作如果仅使用默认的 esp_wake_deep_sleep()
函数,则不需要这样做
唤醒存根代码必须駐留在 RTC 快速存储器中。这可以通过两种方式之一完成
第二种方法是将函数放入名称以 rtc_wake_stub
开头的任何源文件中。文件名 rtc_wake_stub *
中其内容将通过链接器自动放入 RTC
存储器中
对于非常简短的代码,或者对于要混合“普通”和 “RTC” 代码的源文件第一种方法更简单。当你想为 RTC
内存编写更长嘚代码时第二种方法更简单。
存根代码使用的数据必须驻留在 RTC
慢速存储器中ULP 也使用该存储器。
可以通过以下两种方式之一来指定此数据:
快速存储器段中否则将转至 RTC 慢速存储器(默认选项)。此选项取决于 CONFIG_FREERTOS_UNICORE
因为 RTC 快速存储器只能由 PRO_CPU 访问。
的数据进行訪问并且用户有责任确保它。
不幸的是以这种方式使用的任何字符串常量必须声明为数组并用 RTC_RODATA_ATTR
标记,如上例所示
第二种方法是将数據放入名称以 rtc_wake_stub
开头的任何源文件中。
如果您需要使用字符串或编写其他更复杂的代码第二种方法是更好的选择。
医学研究表明闹钟可提醒人们時间,但长期让闹钟来叫醒处于人深度睡眠碰他会醒吗的人会导致人的记忆认知功能减退,还会增加高血压和心脏病患病的风险从哲學角度看,这说明( )
@DPerez好奇——除了配置位之外,您還有什么特别的设置DSWDT吗:我正在努力让DSWDT从人深度睡眠碰他会醒吗中唤醒PIC(在与此相同的论坛中张贴:“DSWDT和MPLLABX模拟器”抱歉还不能张贴链接)谢谢! |