色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Arduino IDE進行ESP32雙核編程

科技觀察員 ? 來源:circuitdigest ? 作者:Rishabh Jain ? 2022-08-18 17:20 ? 次閱讀

ESP 模塊因其 Wi-Fi 功能而廣受歡迎,例如ESP8266、ESP-12E等。這些都是具有 Wi-Fi 功能的強大微控制器模塊。還有一個 ESP 模塊,它比以前的 ESP 模塊更強大、更通用——它的名字是ESP32。它具有藍牙和 Wi-Fi 連接,我們已經解釋了 ESP32 的 BLE 功能,并在許多物聯網項目中使用了 ESP32 。但很少有人知道ESP32 是雙核微控制器

ESP32具有兩個 32 位 Tensilica Xtensa LX6 微處理器,這使其成為功能強大的雙核(core0 和 core1)微控制器。它有單核和雙核兩種變體。但雙核版本更受歡迎,因為沒有明顯的價格差異。

poYBAGL-BAGAFpCuAAKatiyngPU771.png

ESP32 可以使用 Arduino IDE、Espressif IDF、Lua RTOS 等進行編程。使用 Arduino IDE 進行編程時,代碼只能在 Core1 上運行,因為 Core0 已經針對射頻通信進行了編程。但這是本教程,我們將展示如何使用 ESP32的兩個內核同時執行兩個操作。這里的第一個任務是閃爍板載 LED,第二個任務是從 DHT11 傳感器獲取溫度數據。

讓我們首先看看多核處理器相對于單核的優勢。

多核處理器的優勢

當有兩個以上的進程同時工作時,多核處理器很有用。

由于工作分布在不同的內核之間,它的速度會提高,并且可以同時完成多個進程。

可以降低功耗,因為當任何內核處于空閑模式時,它都可以用來關閉當時未使用的外圍設備。

雙核處理器必須比單核處理器更少地在不同線程之間切換,因為它們可以一次處理兩個而不是一次處理一個。

ESP32 和 FreeRTOS

ESP32 板上已經安裝了 FreeRTOS 固件。FreeRTOS 是一個開源實時操作系統,在多任務處理中非常有用。RTOS 有助于管理資源和最大化系統性能。FreeRTOS 有許多用于不同目的的 API 函數,使用這些 API,我們可以創建任務并使它們在不同的內核上運行。

可以在此處找到 FreeRTOS API 的完整文檔。我們將嘗試在代碼中使用一些 API 來構建將在兩個內核上運行的多任務應用程序。

查找 ESP32 內核 ID

在這里,我們將使用Arduino IDE 將代碼上傳到 ESP32中。要知道運行代碼的Core ID,有一個API函數

xPortGetCoreID()

可以從void setup()和void loop()函數調用此函數,以了解運行這些函數的核心 ID。

您可以通過上傳以下草圖來測試此 API:

無效設置() { 
  Serial.begin(115200);
  Serial.print("setup() 函數在核心上運行:"); 
  Serial.println(xPortGetCoreID()); 
} 
void loop() { 
  Serial.print("loop() 函數在核心上運行:"); 
  Serial.println(xPortGetCoreID()); 
}

上傳上面的草圖后,打開串口監視器,你會發現這兩個功能都在 core1 上運行,如下圖所示。

pYYBAGL-A_yABBkPAAJ154y7KcI484.png

從以上觀察可以得出結論,默認的 Arduino 草圖始終在 core1 上運行。

ESP32 雙核編程

Arduino IDE 支持 ESP32 的 FreeRTOS,FreeRTOS API 允許我們創建可以在兩個內核上獨立運行的任務。任務是在板上執行一些操作的代碼,例如閃爍的 LED、發送溫度等。

以下函數用于創建可以在兩個內核上運行的任務。在這個函數中,我們必須給出一些參數,比如優先級、核心 ID 等。

現在,按照以下步驟創建任務和任務功能。

1.首先在void setup函數中創建任務。在這里,我們將創建兩個任務,一個用于每 0.5 秒后閃爍 LED,另一個任務是每 2 秒后獲取溫度讀數。

xTaskCreatePinnedToCore() 函數有 7 個參數:

實現任務的函數名(task1)

任務的任何名稱(“task1”等)

以字為單位分配給任務的堆棧大小(1 個字=2 字節)

任務輸入參數(可以為NULL)

任務的優先級(0為最低優先級)

任務句柄(可以為 NULL)

任務將運行的核心 ID(0 或 1)

現在,通過在 xTaskCreatePinnedToCore() 函數中提供所有參數來創建用于閃爍 LED 的 Task1 。

xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, NULL, 0);

同樣,為 Task2創建 Task2并在第 7個參數中設置 core id 1。

xTaskCreatePinnedToCore(Task2code, "Task2", 10000, NULL, 1, NULL, 1);

您可以根據任務的復雜性更改優先級和堆棧大小。

2. 現在,我們將實現Task1code和Task2code函數。這些函數包含所需任務的代碼。在我們的例子中,第一個任務將閃爍 LED,另一個任務將獲取溫度。因此,在 void setup 函數之外為每個任務創建兩個單獨的函數。

Task1code功能實現了 0.5 秒后閃爍板載 LED,如下所示。

void Task1code( void * parameter) { 
Serial.print("Task1 在核心上運行"); 
Serial.println(xPortGetCoreID()); 
for(;;) {//無限循環
digitalWrite(led, HIGH); 
延遲(500);
digitalWrite(led, LOW);
延遲(500); 
} 
}

同樣,實現獲取溫度的Task2code函數。

void Task2code( void * pvParameters ){ 
  Serial.print("Task2 在核心上運行"); 
  Serial.println(xPortGetCoreID()); 
  for(;;){
    浮動 t = dht.readTemperature(); 
     Serial.print("溫度:"); 
     序列號.print(t); 
   延遲(2000);
  } 
}

3. 這里的void 循環函數將保持為空。我們已經知道循環和設置函數在 core1 上運行,因此您也可以在void 循環函數中實現 core1 任務。

現在編碼部分已經結束,所以只需在工具菜單中選擇 ESP32 板,使用 Arduino IDE 上傳代碼。確保您已將 DHT11 傳感器連接到 ESP32 的引腳 D13。

poYBAGL-A_aATqrmAAIIzDXrRW0533.png

現在可以在 Serial Monitor 或 Arduino IDE 上監控結果,如下所示:

poYBAGL-A_KACR4cAANFKpPKSiE091.png

通過使用 ESP32 的雙核同時運行多個任務,可以構建像實時系統這樣的復雜應用。

#include "DHT.h"

#define DHTPIN 13

#define DHTTYPE DHT11

const int led = 2;

DHT dht(DHTPIN, DHTTYPE);

無效設置() {

Serial.begin(115200);

pinMode(LED,輸出);

dht.begin();

xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, NULL, 1);

延遲(500);

xTaskCreatePinnedToCore(Task1code, "Task1", 10000, NULL, 1, NULL, 0);

延遲(500);

}

void Task1code( void * pvParameters ){

Serial.print("Task1 在核心上運行");

Serial.println(xPortGetCoreID());

for(;;){

digitalWrite(led, HIGH);

延遲(300);

數字寫入(領導,低);

延遲(300);

}

}

void Task2code( void * pvParameters ){

Serial.print("Task2 在核心上運行");

Serial.println(xPortGetCoreID());

for(;;){

浮動 h = dht.readHumidity();

浮動 t = dht.readTemperature();

浮動 f = dht.readTemperature(true);

Serial.print("溫度:");

序列號.print(t);

Serial.print(" *C \n ");

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println("讀取 DHT 傳感器失敗!");

返回;

}

延遲(2000);

}

}

無效循環() {

}

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7571

    瀏覽量

    151631
  • 編程
    +關注

    關注

    88

    文章

    3628

    瀏覽量

    93814
  • Arduino
    +關注

    關注

    188

    文章

    6472

    瀏覽量

    187346
  • ESP32
    +關注

    關注

    18

    文章

    971

    瀏覽量

    17366
收藏 人收藏

    評論

    相關推薦

    ESP8266開發教程-Arduino IDE安裝、配置與使用以及Arduino編程

    本篇介紹了Arduino IDE的安裝、ESP8266開發包的安裝以及Arduino編程的快速入門來測試
    的頭像 發表于 06-06 09:24 ?3.4w次閱讀
    <b class='flag-5'>ESP</b>8266開發教程-<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>安裝、配置與使用以及<b class='flag-5'>Arduino</b><b class='flag-5'>編程</b>

    基于Arduino IDE進行ESP32編程方案

    稱為ESP32。它具有藍牙和Wi-Fi連接,并在許多物聯網項目中使用了ESP32。但是很少有人知道ESP32微控制器。
    的頭像 發表于 01-09 11:25 ?1.6w次閱讀
    基于<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b><b class='flag-5'>進行</b>的<b class='flag-5'>ESP32</b><b class='flag-5'>編程</b>方案

    【FireBeetle 2 ESP32-S3開發板測評】Arduino IDE快速開發體驗

    【FireBeetle 2 ESP32-S3開發板測評】Arduino IDE快速開發體驗
    的頭像 發表于 07-23 09:03 ?2610次閱讀
    【FireBeetle 2  <b class='flag-5'>ESP32</b>-S3開發板測評】<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>快速開發體驗

    如何用來實現ESP32的藍牙打印機打印

    ,考慮到ESP32具有兩個,實際上我們用Arduino進行編程時只使用到了第一個,第0
    發表于 01-25 08:05

    如何使用Arduino IDEESP8266進行編程

    您好,我正在使用 Arduino IDEESP8266 進行編程。我現在需要開始使用 RTOS 為
    發表于 02-23 07:48

    arduino ide中安裝esp32arduino框架時的問題求解

    arduino ide中安裝esp32arduino框架時的問題在arduino ide中安
    發表于 03-06 08:22

    esp32arduino的區別,esp32能否替代arduino

    很多創客愛好者甚至有些技術工程師在理解esp32arduino的時候總是問一句這兩塊板子哪個更好用?他們可能潛意識中就覺得arduinoesp32是競品的關系,但實際是這樣嗎?今天
    發表于 06-24 17:11 ?2.7w次閱讀

    ESP32CPU,利用0實現藍牙打印機打印,1完成常規控制

    ,考慮到ESP32具有兩個,實際上我們用Arduino進行編程時只使用到了第一個,第0
    發表于 11-30 17:51 ?14次下載
    <b class='flag-5'>ESP32</b><b class='flag-5'>雙</b><b class='flag-5'>核</b>CPU,利用<b class='flag-5'>核</b>0實現藍牙打印機打印,<b class='flag-5'>核</b>1完成常規控制

    Arduino-IDE配置ESP32-CAM開發環境踩過的那些坑

    Arduino-IDE配置ESP32-CAM開發環境踩過的那些坑
    發表于 11-30 18:36 ?24次下載
    <b class='flag-5'>Arduino-IDE</b>配置<b class='flag-5'>ESP32</b>-CAM開發環境踩過的那些坑

    如何使用Arduino IDEESP32進行無線編程

    在本教程中,我們將使用Arduino IDE 中的 OTA Web Updater對 ESP32 進行無線 (OTA) 編程
    發表于 08-11 15:42 ?5651次閱讀
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>對<b class='flag-5'>ESP32</b><b class='flag-5'>進行</b>無線<b class='flag-5'>編程</b>

    使用Arduino通過USB串行對ESP32S3進行編程和調試

    電子發燒友網站提供《使用Arduino通過USB串行對ESP32S3進行編程和調試.zip》資料免費下載
    發表于 10-19 14:50 ?3次下載
    使用<b class='flag-5'>Arduino</b>通過USB串行對<b class='flag-5'>ESP32</b>S3<b class='flag-5'>進行</b><b class='flag-5'>編程</b>和調試

    使用Arduino IDE和Visuino對ESP32 M5Stack StickC進行編程

    電子發燒友網站提供《使用Arduino IDE和Visuino對ESP32 M5Stack StickC進行編程.zip》資料免費下載
    發表于 11-21 09:49 ?0次下載
    使用<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>和Visuino對<b class='flag-5'>ESP32</b> M5Stack StickC<b class='flag-5'>進行</b><b class='flag-5'>編程</b>

    如何在Arduino IDE中安裝ESP32開發環境

    要在Arduino IDE中使用ESP32開發板,您需要先安裝相應的開發環境。以下是在Arduino IDE中安裝
    的頭像 發表于 07-13 16:48 ?1.9w次閱讀
    如何在<b class='flag-5'>Arduino</b> <b class='flag-5'>IDE</b>中安裝<b class='flag-5'>ESP32</b>開發環境

    ESP32學習筆記:

    今天我們來說說ESP32 for Arduino
    的頭像 發表于 07-15 16:16 ?5112次閱讀
    <b class='flag-5'>ESP32</b>學習筆記:<b class='flag-5'>雙</b><b class='flag-5'>核</b>

    esp32用什么軟件編程

    。 概述 ESP32具有豐富的外設接口和靈活的編程方式,支持多種編程語言和開發環境。本文將詳細介紹ESP32編程軟件,包括開發環境、
    的頭像 發表于 08-19 17:24 ?3781次閱讀
    主站蜘蛛池模板: 丰满大屁俄罗斯肥女| 一级做a爰片久久毛片苍井优| 日操夜操天天操| 无罩看奶禁18| 0855午夜福利伦理电影| 国产精品系列在线观看| 欧美阿v天堂视频在99线| 亚洲精品无夜久久久久久久久| porono日本xxx| 久久视频在线视频观看天天看视频| 日韩欧美中文字幕在线二视频| 在线免费观看毛片| 果冻传媒在线观看完整版免费| 妻中蜜在线播放| 国产精品爽黄69天堂A片| 欧美乱妇狂野欧美在线视频| 夜夜骑夜夜欢| 国产午夜电影院| 婷婷午夜影院| 国产99久久久国产精品成人| 欧美性视频xxxxhd| 91麻豆久久| 美国兽皇zoo在线播放| 野花日本高清在线观看免费吗| 国产一区二区三区影院| 无人区乱码区1卡2卡三卡在线 | 久久re视频精品538在线| 无码专区久久综合久综合字幕| 成人影片大全| 日本老师xxxxx18| 成人动漫百度影音| 啪啪做羞羞事小黄文| 99免费在线观看| 麻豆免费观看高清完整视频| 影音先锋男人资源813.| 国产在线精品一区二区网站免费 | 广西美女色炮150p图| 朋友的娇妻好爽好烫嗯| 99久久精品全部| 免费精品美女久久久久久久久久| 自拍黄色片|