ESP32-WROOM-使用多核的问题

如何解决ESP32-WROOM-使用多核的问题

我的ESP32 Wroom代码有问题。 我正在尝试使用esp上的两个内核来加速并为设备创建高效的过程。一个核心检查网站页面上的更改/响应。另一个根据收到的响应更改led模式。

核心0(获取响应)应该不断使用网站上收到的最新信息来更新一个名为“有效负载”的字符串。这是在另一个内核正在显示模式之前发生的,直到它收到“有效载荷”的更改为止;并相应地进行更改。

我遇到的问题是,在上传并首次启动后的esp每1-2秒会打印以下消息:

rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0,SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO,clock div:1
load:0x3fff0018,len:4 
load:0x3fff001c,len:1044 
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac

某些消息中也印有此内容:

上师冥想错误:核心0惊慌(双重例外)

我是ESP32的新手,没有Arduino的丰富经验,是否有人知道我在做错什么,或者为避免当前问题而实现同一目标的方法。预先感谢。

这是我的项目的代码。

TaskHandle_t Task1;

#include <WiFi.h>
#include <Wire.h>
#include <HTTPClient.h>
#include "FastLED.h"
#define NUM_LEDS 50
#define PIN 27

uint8_t hue[NUM_LEDS];
CRGBArray<NUM_LEDS> leds;

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

const char* serverName = "https://example.com/page.php";

String apiKeyValue = "tPmAT5Ab3j7F9";
String payload;

void codeForTask1( void * parameter )
{
  for (;;) 
  {   
    if(WiFi.status() == WL_CONNECTED)
    {
      HTTPClient http;
      
      // Your Domain name with URL path or IP address with path
      http.begin(serverName);
      
      // Specify content-type header
      http.addHeader("Content-Type","application/x-www-form-urlencoded");
      
      // Prepare your HTTP POST request data
      String httpRequestData = "api_key=" + apiKeyValue;
      
    
      // Send HTTP POST request
      int httpResponseCode = http.GET();
      
          
      if (httpResponseCode>0)
      {
        payload = http.getString();
      }
    }
    delay(1000);    
  }
}

void setup() 
{
  Serial.begin(115200);
  
  WiFi.begin(ssid,password);
  while(WiFi.status() != WL_CONNECTED) { 
    delay(500);
  }
  
  
  FastLED.addLeds<NEOPIXEL,PIN>(leds,NUM_LEDS);
  for (int i = 0; i < NUM_LEDS; i++)
  {
    hue[i] = 255 / NUM_LEDS * i;
  }
  
  xTaskCreatePinnedToCore(
    &codeForTask1,"led1Task",2000,NULL,1,&Task1,0);
  delay(500);  // needed to start-up task1
}

void loop() 
{
  String payload2 = payload;
  if(payload2.indexOf("rainbow") >= 0)
  {
    while(payload2.indexOf("rainbow") >= 0)
    {
      for(int i=0; i<NUM_LEDS; i++)
      {
        leds[i] = CHSV(hue[i]++,255,255);
      }            
      delay(100);
      FastLED.show();  
    }
    Serial.print(payload2 + " || Rainbow \n");
  }
  else if(payload2.indexOf("worm") >= 0)
  {
    
    for(int i=0; i<NUM_LEDS; i++)
    {
        for(int e=0; e<=1; e++)
        {
          if(e == 0){
            leds[i] = CRGB(255,255);
            leds[i+2] = CRGB(255,255);
            leds[i+4] = CRGB(255,255);
            leds[i+6] = CRGB(255,255);
            FastLED.show();
          }else{
            leds[i] = CRGB(0,0);
            leds[i+2] = CRGB(0,0);
            FastLED.show();
          }
          delay(100);
        }
    }      
    Serial.print(payload2 + " || Worm \n");
  }
  else if(payload2.indexOf("ant") >= 0)
  {
    
    for(int i=0; i<NUM_LEDS; i++)     // loop
    {    
      for(int e=0; e<=1; e++)
      {
        if(e == 0)
        {
          leds[i] = CRGB(255,255);
          leds[i+1] = CRGB(255,255);
          leds[i+2] = CRGB(0,0);
          leds[i+4] = CRGB(255,255);
          leds[i+5] = CRGB(255,255);
          leds[i+3] = CRGB(0,0);
  
          FastLED.show();
        }
        else
        {
          leds[i] = CRGB(0,0);
          leds[i+1] = CRGB(0,0);
          FastLED.show();
        }
        delay(50);
      }
    }
    Serial.print(payload2 + " || Ant \n");
  }
  else if(payload.indexOf("off") >= 0)
  {
    Serial.print(payload2 + " || Off \n" );
  }
  else if(!payload2.isEmpty())
  {
    String dab = payload;
    String hexstring = dab;
    long number = (long) strtol( &hexstring[0],16 );
    int r = number >> 16;
    int g = number >> 8 & 0xFF;
    int b = number & 0xFF;
    
    for(int i=0; i<NUM_LEDS; i++){
      leds[i] = CRGB(r,g,b);
    }
    FastLED.show();               // start new rgb led strip assignment/patterns
    Serial.print(payload2 + " || CUSTOM COLOR \n");
  } 
  delay(1000);
  Serial.print("Task 1: Done \n");
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-