解决ESP.deepSleep()无法唤醒的问题
问题
先前在解决ESP8266深度睡眠无法唤醒、唤醒后挂起问题 | VR小杰的知识库 (vrxiaojie.top)提到过ESP8266 NodeMCU 无法唤醒的问题。最近两天买了ESP-12F,想尝试将MISO接电阻上拉,竟然唤醒不起来。
解决方案
在Github上有解决方法,解决方式好像是直接写内核,很神奇,拿来用用。
Wemos d1 mini not waking up · Issue #6318 · esp8266/Arduino (github.com)
#include "c_types.h"
uint32_t*RT= (uint32_t *)0x60000700;
void DeepSleepNK(uint32 t_us)
{
RT[4] = 0;
*RT = 0;
RT[1]=100;
RT[3] = 0x10010;
RT[6] = 8;
RT[17] = 4;
RT[2] = 1<<20;
ets_delay_us(10);
RT[1]=t_us>>3;
RT[3] = 0x640C8;
RT[4]= 0;
RT[6] = 0x18;
RT[16] = 0x7F;
RT[17] = 0x20;
RT[39] = 0x11;
RT[40] = 0x03;
RT[2] |= 1<<20;
__asm volatile ("waiti 0");
}
void setup() {
// put your setup code here, to run once:
#define Time_us 10000000 //进入深度睡眠10s
#define Time 1.31*Time_us
DeepSleepNK(Time);
}
void loop() {
}
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 VR小杰
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果