首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复古鲁冥想错误:核心1恐慌(LoadProhibited)错误

如何修复古鲁冥想错误:核心1恐慌(LoadProhibited)错误
EN

Stack Overflow用户
提问于 2020-08-13 16:59:29
回答 2查看 18.7K关注 0票数 0

我正试图为ESP32芯片编写代码,它接收来自DHT22传感器的读数,将其打包到json文件中,然后将其发送到一个烧瓶服务器。在我尝试发布之前,一切都很好,我在那里得到了以下错误:

代码语言:javascript
复制
Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC      : 0x400d3488  PS      : 0x00060030  A0      : 0x800d355c  A1      : 0x3ffb1bb0  
A2      : 0x00000000  A3      : 0x3ffb1bff  A4      : 0x00000001  A5      : 0x00000001  
A6      : 0x00000000  A7      : 0x00000000  A8      : 0x00000000  A9      : 0x00000000  
A10     : 0x00000000  A11     : 0x3ffcb8fc  A12     : 0x00000050  A13     : 0x00000001  
A14     : 0x00000000  A15     : 0x00000000  SAR     : 0x0000000a  EXCCAUSE: 0x0000001c  
EXCVADDR: 0x00000008  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff

我试着对这个问题做了详尽的调查,但没有结果,我也不知道发生了什么。有谁能洞察如何解决这个问题呢?

这是我的Arduino代码:

代码语言:javascript
复制
#include <HTTPClient.h>
#include <WiFi.h>
#include <DHT.h>
#include <ArduinoJson.h>

#define DHTTYPE DHT22

const char* ssid = "ssid";
const char* password = "password";

uint8_t sensor = 16;
DHT dht(sensor, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
  WiFi.begin(ssid, password);

  while(WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting...");
  }
  Serial.println("Connected!");
}

void loop() {
  if(WiFi.status() == WL_CONNECTED) {
    HTTPClient http;
    http.begin("http://192.168.10.5:8090/");
    http.addHeader("Content-Type", "text/plain");
    Serial.println("Began http on Flask");

    const int cap = JSON_OBJECT_SIZE(2);
    StaticJsonDocument<cap> doc;
    Serial.println("Created json document");

    doc["temperature"] = dht.readTemperature();
    doc["humidity"] = dht.readHumidity();
    Serial.println("Read temperature and humidity correctly");

    char output[256];
    serializeJsonPretty(doc, output);
    Serial.println(output);
    
    //Code will give back error after trying to POST
    int httpCode = http.POST(output);
    Serial.println("Got httpCode");
    if(httpCode > 0) {
      Serial.println(httpCode);
    } else Serial.println("Error in Connection");
    http.end();
  }
  delay(10000);
}

这里有print语句,这些语句将打印出各种内容,具体取决于它在代码中的位置。它可以很好地打印出json文档,但没有打印出"Got“。下面是我为Flask服务器编写的代码:

代码语言:javascript
复制
from flask import Flask, request
app = Flask(__name__)

@app.route('/', methods = ['POST'])
def hello():
    req = request.get_json()
    print(req)
    return "Thanks", 200

if __name__ == "__main__":
    app.run(host = '0.0.0.0', port = 8090)

提前谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2020-11-19 09:05:55

在使用WebSockets时,我也得到了这个错误。

原来,我用来接收消息的缓冲区(声明为全局)是附加了新消息,而不是覆盖中先前存在的内容。因此,非法的内存写入尝试被进行,设备惊慌失措并重新启动.

onWebSocketEvent()解决方案:我只是在函数中本地声明缓冲区,当缓冲区在每个事件上被重新声明时,就解决了覆盖问题,防止了非法的内存写入尝试。这个装置再也没有惊慌失措。

票数 2
EN

Stack Overflow用户

发布于 2020-08-13 17:41:01

我在回调过程中遇到了一个Guru错误,原因是微内存耗尽了。解决方案是摆脱未使用的库,使用指针而不是创建局部变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63399901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档