当前位置: 首页 > news >正文

汕头珠宝网站建设住房和城乡建设厅施工员证

汕头珠宝网站建设,住房和城乡建设厅施工员证,怎样在手机上建设网站,企业seo报价表如何使双核心的ESP32开启双核功能同时执行多任务 简介查看ESP32当前哪一个内核在执行任务双核同时执行任务总结 简介 ESP32-WROOM-32模组内置两个低功耗 Xtensa 32-bit LX6 MCU,两个 CPU 核(core 0与core 1)可以被单独控制。可以在两个内核上…

如何使双核心的ESP32开启双核功能同时执行多任务

    • 简介
    • 查看ESP32当前哪一个内核在执行任务
    • 双核同时执行任务
    • 总结

简介

在这里插入图片描述

ESP32-WROOM-32模组内置两个低功耗 Xtensa® 32-bit LX6 MCU,两个 CPU 核(core 0与core 1)可以被单独控制。可以在两个内核上同时运行多段代码,让ESP32实现多任务(执行某些事情的代码片段)处理。Arduino IDE默认情况下启用的是core 1。ESP32可以运行实时操作系统RTOS,并行的处理几个独立运行的任务。要将代码的特定部分分配给特定的内核,需要创建任务。当创建一个任务时,可以选择它将在哪个内核中运行,以及它的优先级。优先级值从0开始,其中0是最低优先级。处理器将首先运行优先级较高的任务。

在这里插入图片描述

查看ESP32当前哪一个内核在执行任务

打开Arduino IDE并给ESP32上传如下代码
调用xPortGetCoreID()函数,可以获取内核号

void setup() {Serial.begin(115200);Serial.print("setup() running on core ");Serial.println(xPortGetCoreID());
}void loop() {Serial.print("loop() running on core ");Serial.println(xPortGetCoreID());
}

打开串口监视器即可查看ESP32当前内核1正在执行任务
在这里插入图片描述

双核同时执行任务

打开Arduino IDE并给ESP32上传如下代码

TaskHandle_t Task1;
TaskHandle_t Task2;// LED pins
const int led1 = 2;
const int led2 = 4;
void setup() {
Serial.begin(115200); 
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);//create a task that will be executed in the Task1code() function, with priority 1 and executed on core 0xTaskCreatePinnedToCore(Task1code,   /* Task function. */"Task1",     /* name of task. */10000,       /* Stack size of task */NULL,        /* parameter of the task */1,           /* priority of the task */&Task1,      /* Task handle to keep track of created task */0);          /* pin task to core 0 */                  delay(500); //create a task that will be executed in the Task2code() function, with priority 1 and executed on core 1xTaskCreatePinnedToCore(Task2code,   /* Task function. */"Task2",     /* name of task. */10000,       /* Stack size of task */NULL,        /* parameter of the task */1,           /* priority of the task */&Task2,      /* Task handle to keep track of created task */1);          /* pin task to core 1 */delay(500); 
}//Task1code: blinks an LED every 1000 ms
void Task1code( void * pvParameters ){Serial.print("Task1 running on core ");Serial.println(xPortGetCoreID());for(;;){digitalWrite(led1, HIGH);delay(1000);digitalWrite(led1, LOW);delay(1000);} 
}//Task2code: blinks an LED every 700 ms
void Task2code( void * pvParameters ){Serial.print("Task2 running on core ");Serial.println(xPortGetCoreID());for(;;){digitalWrite(led2, HIGH);delay(700);digitalWrite(led2, LOW);delay(700);}
}void loop() {}

本代码实现在内核0上执行让LED1每1000ms间隔闪烁,在内核1上执行让LED2每700ms间隔闪烁。两任务的优先级都为1,同时执行,并在串口监视器上打印出内核信息。若不开启双核执行,采用默认的单核顺序执行,就不能让LED1和LED2同时以不同的间隔闪烁。
若在任务执行期间,想删除任务,可以调用函数vTaskDelete(Task1)。
在这里插入图片描述

总结

带有双核功能的ESP32,使得我们在设计并行功能的应用时简化了程序,提高了效率。例如,使用一个内核获取传感器读数,使用另一个内核根据读数执行其他的任务功能。

http://www.yayakq.cn/news/256118/

相关文章:

  • 有专业做网站世界杯比分查询
  • 江西网站设计哪家强wordpress togetherjs
  • 个人网站做贷款广告邢台网站网页设计
  • 企业网站怎么做才能留住客户wordpress python代码
  • 威海外贸网站建设联系方式深圳网站制作 公司
  • 秦皇岛 网站建设烟台响应式网站建设
  • 青之峰做网站wordpress建外贸站
  • 怎么登录小程序平台网站是怎么优化的
  • 济南营销网站建设wordpress快速网店主题
  • 怎样建立和设计公司网站网站代理什么意思
  • 山东省城建设计院网站深圳高端做网站公司
  • 做电影网站多少带宽在哪个网站做推广比较好
  • 上海黄金网站设计网站建设关键要做好哪些工作
  • 陕西省住房和城乡建设厅网站上查询余杭住房和城乡建设局网站
  • 山东省住房和建设厅网站诸暨做网站广告的电话
  • 营销类网站设计 要点多媒体网页设计
  • 互联网网站如何做培训计划模板
  • 江安县规划和建设局网站企业网站建设资金预算表
  • 大港油田建设网站wordpress 拍卖主题
  • 手机企业网站建设vs2008 做网站
  • 摄影师网站建设wordpress+论坛+注册
  • 婚纱网站建设 最开始网页微信版传输助手
  • 网站每天一条推送怎么做的网站开发gxjzdrj
  • 复兴区建设局网站东莞保安公司电话
  • 北京做erp报价的网站顺义成都网站建设
  • 中企动力做网站多少钱外网网站建设调研报告
  • 洛南网站建设网站建设对企业带来什么作用
  • 潍坊免费自助建站模板网站网页转app源码
  • 深圳网站制作必选祥奔科技吉林长春seo网站建设网站优化
  • 国内网站建设推荐wordpress微商模板