问题

先前在解决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() {
}