|
发表于 2021-5-20 11:27:32
|
显示全部楼层
感谢你啊,测试成功!结合你的代码和系统自带的例子,目前手动RST测试成功,下一步引GP16至RST,就能自动唤醒。
- struct {
- uint32_t crc32; //4 bytes
- byte data[2]; //useful data,512-4=508 bytes
- } rtcData;
- void setup() {
- //手动开机或自动唤醒开机后,开始执行下面的代码
- pinMode(2, OUTPUT);
- //打开板载LED灯
- digitalWrite(2,LOW);
-
- Serial.begin(38400);
- Serial.println();
- delay(500);
- // Read struct from RTC memory
- if (ESP.rtcUserMemoryRead(0, (uint32_t*) &rtcData, sizeof(rtcData)))
- { //read to rtcData successfully
- Serial.println("Read to rtcData: ");
- printMemory();
- Serial.println();
-
-
- Serial.print("CRC32 read from RTC: ");
- Serial.println(rtcData.crc32, HEX);
- uint32_t crcOfData = calculateCRC32((uint8_t*) &rtcData.data[0], sizeof(rtcData.data));
- Serial.print("Calced CRC32 of data: ");
- Serial.println(crcOfData, HEX);
-
- if (crcOfData != rtcData.crc32)
- {
- Serial.println("CRC32 in RTC memory doesn't match CRC32 of data. Data is probably invalid!");
- rtcData.data[0]= 0 ;
- rtcData.data[1]= 0 ;
- }
- else
- {
- Serial.println("CRC32 check ok, data is probably valid.");
- }
- }
- // Generate new data set for the struct
- for (size_t i = 0; i < sizeof(rtcData.data); i++) {
- // rtcData.data[i] = random(0, 128);
- }
- rtcData.data[0] ++;
-
- // Update CRC32 of data
- rtcData.crc32 = calculateCRC32((uint8_t*) &rtcData.data[0], sizeof(rtcData.data));
- Serial.print("Calced CRC32 of new data: ");
- Serial.println(rtcData.crc32, HEX);
-
- // Write struct to RTC memory
- if (ESP.rtcUserMemoryWrite(0, (uint32_t*) &rtcData, sizeof(rtcData))) {
- Serial.println("Write: ");
- printMemory();
- Serial.println();
- }
-
- digitalWrite(2,HIGH); // 关LED
- Serial.println("Going into deep sleep for 10 seconds");
- delay(700);
- digitalWrite(2,LOW); //开LED
- delay(500);
- WiFi.mode(WIFI_OFF);
- ESP.deepSleep(10*1e6); //相当于关机,10秒后自动开机
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|