首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在esp32上使用DallasTemperature和Wifi.h时出现上师冥想错误

在esp32上使用DallasTemperature和Wifi.h时出现上师冥想错误
EN

Stack Overflow用户
提问于 2021-09-25 06:51:46
回答 1查看 85关注 0票数 0

当我尝试在我的esp32上使用Wifi + DallasTemperature && OneWire时,我得到了这个错误。温度传感器是重力DS18B20。

当我不使用Wifi时,它工作得很好。

这是一个错误代码

代码语言:javascript
复制
09:41:17.049 -> Guru Meditation Error: Core  1 panic'ed (LoadProhibited). Exception was unhandled.
09:41:17.082 -> 
09:41:17.082 -> Core  1 register dump:
09:41:17.082 -> PC      : 0x400d3b40  PS      : 0x00060433  A0      : 0x800d4488  A1      : 0x3ffb2710  
09:41:17.082 -> A2      : 0x3f40af28  A3      : 0x0000001c  A4      : 0x0a4c4c55  A5      : 0x3ff49000  
09:41:17.082 -> A6      : 0x00000020  A7      : 0x00000000  A8      : 0x800d3b15  A9      : 0x3ffb26d0  
09:41:17.082 -> A10     : 0x00060420  A11     : 0x3ffc2cac  A12     : 0x3ffc2ca4  A13     : 0xb33fffff  
09:41:17.082 -> A14     : 0x00000001  A15     : 0x00000001  SAR     : 0x00000020  EXCCAUSE: 0x0000001c  
09:41:17.115 -> EXCVADDR: 0x0a4c4c55  LBEG    : 0x400df328  LEND    : 0x400df332  LCOUNT  : 0x00000000  
09:41:17.115 -> 
09:41:17.115 -> 
09:41:17.115 -> Backtrace:0x400d3b3d:0x3ffb27100x400d4485:0x3ffb2750 0x400d476c:0x3ffb2780 0x400d2782:0x3ffb27b0 0x400d53b7:0x3ffb2820 

在这里我把它解码了

代码语言:javascript
复制
Decoding 5 results
0x400d3b3d: OneWire::reset() at /home/suomi/Arduino/libraries/OneWire/util/OneWire_direct_gpio.h line 165
:  (inlined by) OneWire::reset() at /home/suomi/Arduino/libraries/OneWire/OneWire.cpp line 172
0x400d4485: OneWire::search(unsigned char*, bool) at /home/suomi/Arduino/libraries/OneWire/OneWire.cpp line 388
0x400d476c: DallasTemperature::begin() at /home/suomi/Arduino/libraries/DallasTemperature/DallasTemperature.cpp line 113
0x400d2782: setup() at /home/suomi/Arduino/sketch_sep18a/sketch_sep18a.ino line 53
0x400d53b7: loopTask(void*) at /home/suomi/.arduino15/packages/esp32/hardware/esp32/2.0.0/cores/esp32/main.cpp line 38

在上面提到的文件中也使用回溯的行

代码语言:javascript
复制
1. ESP_REG(rtc_reg) = ESP_REG(rtc_reg) & ~(rtc_io_desc[pin].mux);

2. DIRECT_MODE_INPUT(reg, mask);

3.if (!reset()) {

4.while (_wire->search(deviceAddress)) {

5.sensors.begin();

6.void loopTask(void *pvParameters)
{
    setup();

和我的执行代码

代码语言:javascript
复制
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>


// Wifi Settings
#define WIFI_NETWORK "name"
#define WIFI_PASSWORD "pass"
#define WIFI_TIMOUT_MS 20000

const int oneWireBus = 32;
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
int status;



int connectToWiFi() {
    Serial.println(" ");
    Serial.print("Connencting to WiFi");
    Serial.print(" ");
    WiFi.mode(WIFI_STA);
    WiFi.begin(WIFI_NETWORK, WIFI_PASSWORD);

    unsigned long startAttemptTime = millis();

    while(WiFi.status() != WL_CONNECTED && millis() - startAttemptTime < WIFI_TIMOUT_MS) {
        Serial.print(".");
        delay(700);
    }

    if (WiFi.status() != WL_CONNECTED) {
        Serial.println("Failed connect to WiFi!");
        return 0;

    }

    else {
        Serial.print("Connected to WiFi");
        Serial.println(WIFI_NETWORK);
        Serial.println(WiFi.localIP());
        return 1;
    }
}


void setup() {
    status = connectToWiFi();
    Serial.begin(115200);
    sensors.begin();


void loop() {
        
}

我的c++不是很好,有人能帮我吗?LoadProhibited:看起来它试图访问一个它不应该访问的内存?

EN

回答 1

Stack Overflow用户

发布于 2021-10-18 08:04:41

我已经很久没有在ESP32上使用Arduino库了。也许应该在connectToWifi()之前调用Serial.begin(),因为您在初始化它之前调用了Serial方法。

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

https://stackoverflow.com/questions/69323812

复制
相关文章

相似问题

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