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

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Arduino IDE進(jìn)行的ESP32編程方案

454398 ? 來(lái)源:一板網(wǎng) ? 作者:風(fēng)箏 ? 2021-01-09 11:25 ? 次閱讀

ESP模塊因其Wi-Fi功能(如ESP8266、ESP-12E等)而廣受歡迎。這些都是具有Wi-Fi功能的強(qiáng)大微控制器模塊。還有一個(gè)ESP模塊,它比以前的ESP模塊更強(qiáng)大,更通用 - 其名稱為ESP32。它具有藍(lán)牙和Wi-Fi連接,并在許多物聯(lián)網(wǎng)項(xiàng)目中使用了ESP32。但是很少有人知道ESP32是雙核微控制器

ESP32具有兩個(gè)32位TensilicaXtensa LX6微處理器,這使其成為功能強(qiáng)大的雙核(core0和core1)微控制器。有單核和雙核兩種版本。但是雙核版本更受歡迎,因?yàn)樗鼈冎g沒(méi)有明顯的價(jià)格差異。

pIYBAF_5ISOAVMwOAALgMyZsttw569.png

可以使用Arduino IDE、Espressif IDF、Lua RTOS等對(duì)ESP32進(jìn)行編程。使用Arduino IDE進(jìn)行編程時(shí),由于Core0已編程用于RF通信,因此代碼僅在Core1上運(yùn)行。但是在本篇文章中,我們將展示如何使用ESP32的兩個(gè)內(nèi)核同時(shí)執(zhí)行兩項(xiàng)操作。在這里,第一個(gè)任務(wù)是使板載LED閃爍,第二個(gè)任務(wù)是從DHT11傳感器獲取溫度數(shù)據(jù)。

首先讓我們看看多核處理器比單核的優(yōu)勢(shì)。

多核處理器的優(yōu)勢(shì)

1.當(dāng)有兩個(gè)以上的進(jìn)程要同時(shí)工作時(shí),多核處理器很有用。

2.由于工作分布在不同的內(nèi)核之間,因此速度提高了,并且可以同時(shí)完成多個(gè)過(guò)程。

3.可以降低功耗,因?yàn)楫?dāng)任意內(nèi)核處于空閑模式時(shí),它可以用來(lái)關(guān)閉當(dāng)時(shí)不使用的外圍設(shè)備。

4.與單核處理器相比,雙核處理器在不同線程之間切換的頻率更低,因?yàn)樗鼈兛梢砸淮翁幚韮蓚€(gè),而不是一次處理一個(gè)線程。

ESP32和FreeRTOS

ESP32開(kāi)發(fā)板已經(jīng)安裝了FreeRTOS固件。 FreeRTOS是開(kāi)源的實(shí)時(shí)操作系統(tǒng),在多任務(wù)處理中非常有用。 RTOS有助于管理資源并最大程度地提高系統(tǒng)性能。 FreeRTOS具有許多用于不同目的的API函數(shù),使用這些API,我們可以創(chuàng)建任務(wù)并使它們運(yùn)行在不同的內(nèi)核上。

FreeRTOS API的完整文檔可以在這里找到。我們將嘗試在代碼中使用一些API來(lái)構(gòu)建在兩個(gè)內(nèi)核上運(yùn)行的多任務(wù)應(yīng)用程序。

查找ESP32內(nèi)核ID

在這里,我們將使用Arduino IDE將代碼上傳到ESP32。要知道運(yùn)行代碼的Core ID,有一個(gè)API函數(shù)

xPortGetCoreID()

可以從void setup()和void loop()函數(shù)中調(diào)用此函數(shù),以了解運(yùn)行這些函數(shù)的內(nèi)核ID。

您可以通過(guò)上傳以下草圖來(lái)測(cè)試此API:

void setup() {

Serial.begin(115200);

Serial.print("setup() function running on core: ");

Serial.println(xPortGetCoreID());

}

void loop() {

Serial.print("loop() function running on core: ");

Serial.println(xPortGetCoreID());

}

上傳完上述草圖后,打開(kāi)串口監(jiān)視器,您會(huì)發(fā)現(xiàn)這兩個(gè)函數(shù)都在core1上運(yùn)行,如下所示。

o4YBAF_5ITSAdTCAAAHdhCdBCqI066.png

從以上觀察結(jié)果可以得出結(jié)論,默認(rèn)的Arduino草圖始終在core1上運(yùn)行。

ESP32雙核編程

Arduino IDE支持在ESP32運(yùn)行FreeRTOS,而FreeRTOS API允許我們創(chuàng)建可以在兩個(gè)內(nèi)核上獨(dú)立運(yùn)行的任務(wù)。任務(wù)是一段在開(kāi)發(fā)板上執(zhí)行某些操作的代碼,例如LED閃爍、發(fā)送溫度等。

以下函數(shù)用于創(chuàng)建可以在兩個(gè)內(nèi)核上運(yùn)行的任務(wù)。在此函數(shù)中,我們必須提供一些參數(shù),例如優(yōu)先級(jí)、內(nèi)核ID等。

現(xiàn)在,按照以下步驟創(chuàng)建任務(wù)和任務(wù)函數(shù)。

1.首先,在void setup函數(shù)中創(chuàng)建任務(wù)。在這里,我們將創(chuàng)建兩個(gè)任務(wù),一個(gè)任務(wù)是每0.5秒閃爍一次LED,另一任務(wù)是每2秒獲得溫度讀數(shù)。

xTaskCreatePinnedToCore()函數(shù)使用7個(gè)參數(shù):

● 實(shí)現(xiàn)任務(wù)的函數(shù)名稱(task1)

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

● 分配給任務(wù)的堆棧大小,以字為單位

● 任務(wù)輸入?yún)?shù)(可以為NULL)

● 任務(wù)的優(yōu)先級(jí)(0是最低優(yōu)先級(jí))

● 任務(wù)句柄(可以為NULL)

● 任務(wù)將運(yùn)行的內(nèi)核ID(0或1)

現(xiàn)在,通過(guò)在xTaskCreatePinnedToCore()函數(shù)中提供所有參數(shù)來(lái)創(chuàng)建Task1,以使指示燈閃爍。

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

同樣,為任務(wù)2創(chuàng)建Task2,并在第7個(gè)參數(shù)中將內(nèi)核ID設(shè)置為1。

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

您可以根據(jù)任務(wù)的復(fù)雜性更改優(yōu)先級(jí)和堆棧大小。

2.現(xiàn)在,我們將實(shí)現(xiàn)Task1code和Task2code函數(shù)。這些函數(shù)包含所需任務(wù)的代碼。在本例中,第一個(gè)任務(wù)將使LED閃爍,另一個(gè)任務(wù)將獲取溫度。因此,在void setup函數(shù)之外,為每個(gè)任務(wù)創(chuàng)建兩個(gè)單獨(dú)的函數(shù)。

Task1code函數(shù)實(shí)現(xiàn)了0.5秒后板上LED閃爍,如下所示:

Void Task1code( void * parameter) {

Serial.print("Task1 running on core ");

Serial.println(xPortGetCoreID());

for(;;) {//infinite loop

digitalWrite(led, HIGH);

delay(500);

digitalWrite(led, LOW);

??delay(500);

}

}

同樣,實(shí)現(xiàn)Task2code函數(shù)以獲取溫度。

void Task2code( void * pvParameters ){

Serial.print("Task2 running on core ");

Serial.println(xPortGetCoreID());

for(;;){

float t = dht.readTemperature();

Serial.print("Temperature: ");

Serial.print(t);

delay(2000);

}

}

3.此處的void loop函數(shù)將保持為空。 我們已經(jīng)知道loop和setup函數(shù)在core1上運(yùn)行,因此您也可以在void loop函數(shù)中實(shí)現(xiàn)core1任務(wù)。

現(xiàn)在代碼部分已經(jīng)結(jié)束,因此只需在“Tool”菜單中選擇ESP32板,即可使用Arduino IDE上傳代碼。 確保已將DHT11傳感器連接到ESP32的D13引腳。

pIYBAF_5IU-ASylTAAIvxSDU1fQ758.png

現(xiàn)在,可以在串口監(jiān)視器上監(jiān)視結(jié)果,如下所示:

pIYBAF_5IWqAaA8jAAKeuSuX-p0896.png

可以通過(guò)使用ESP32的雙核同時(shí)運(yùn)行多個(gè)任務(wù)來(lái)構(gòu)建諸如實(shí)時(shí)系統(tǒng)之類的復(fù)雜應(yīng)用程序。
編輯:hfy

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151316
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    啟明智顯ESP32系列串口屏全面升級(jí)!支持樂(lè)鑫IDF最新版,兼容Arduino開(kāi)發(fā)環(huán)境

    啟明智顯的ESP32系列串口屏迎來(lái)了全面升級(jí),SDK更新至樂(lè)鑫IDF的最新版本,并且完美兼容Arduino開(kāi)發(fā)環(huán)境!
    的頭像 發(fā)表于 09-05 16:48 ?972次閱讀
    啟明智顯<b class='flag-5'>ESP32</b>系列串口屏全面升級(jí)!支持樂(lè)鑫IDF最新版,兼容<b class='flag-5'>Arduino</b>開(kāi)發(fā)環(huán)境

    簡(jiǎn)述三種esp32的開(kāi)發(fā)方式是什么

    ESP32是一款由樂(lè)鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍(lán)牙雙模無(wú)線通信芯片,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能硬件等領(lǐng)域。本文將詳細(xì)介紹三種ESP32的開(kāi)發(fā)方式:Arduino
    的頭像 發(fā)表于 08-20 09:11 ?2851次閱讀

    esp32esp8266代碼共用嗎

    8266作為兩款具有Wi-Fi功能的微控制器,因其低成本、易用性和靈活性而受到廣泛關(guān)注。然而,盡管它們?cè)谀承┓矫婢哂邢嗨菩裕谟布阅堋㈤_(kāi)發(fā)環(huán)境和編程語(yǔ)言等方面仍存在一定差異。 二、ESP32ESP8266簡(jiǎn)介
    的頭像 發(fā)表于 08-19 18:23 ?1114次閱讀

    esp32用什么軟件編程

    。 概述 ESP32具有豐富的外設(shè)接口和靈活的編程方式,支持多種編程語(yǔ)言和開(kāi)發(fā)環(huán)境。本文將詳細(xì)介紹ESP32編程軟件,包括開(kāi)發(fā)環(huán)境、
    的頭像 發(fā)表于 08-19 17:24 ?3408次閱讀

    在對(duì)ESP進(jìn)行編程時(shí),使用什么IDE

    在對(duì)ESP進(jìn)行編程時(shí),使用什么IDE
    發(fā)表于 07-19 09:45

    ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區(qū)別?ESP32-WROOM-32 后綴字母代表的意思是?

    相信很多人心里都有這樣的疑問(wèn),今天就教大家怎么區(qū)分它們。 32D和32U是同一個(gè)芯片ESP32-D0WD的模組,主要區(qū)別的天線模式,分別是板載和IPEX外接天線。 32E是用的升級(jí)版的芯片
    的頭像 發(fā)表于 07-17 10:09 ?9378次閱讀
    <b class='flag-5'>ESP32</b>-WROOM-32E、<b class='flag-5'>ESP32</b>-WROOM-32D、<b class='flag-5'>ESP32</b>-WROOM-32U  有什么區(qū)別?<b class='flag-5'>ESP32</b>-WROOM-32 后綴字母代表的意思是?

    esp32Arduino IDE中可以實(shí)現(xiàn)調(diào)用百度智能云接口嗎?

    esp32Arduino IDE中可以實(shí)現(xiàn)調(diào)用百度智能云接口嗎?涉及到http協(xié)議,想知道能不能不用esp-idf
    發(fā)表于 06-28 06:52

    esp32-S3支持arduino編程嗎?

    arduino選開(kāi)發(fā)板的時(shí)候沒(méi)有es32-s3, 只有s2可選。 請(qǐng)問(wèn): 1. esp32-S3支持arduino編程嗎 2. arduino
    發(fā)表于 06-27 08:23

    Ardunio IDE如何選擇ESP32板類型?

    我是新學(xué)者,購(gòu)買的開(kāi)發(fā)板是ESP32-DevKitC,搭載的模組是ESP32-WROVER-IE(集成芯片是ESP32-D0WD-V3)。 嘗試使用ardunio IDE,在
    發(fā)表于 06-24 09:06

    請(qǐng)問(wèn)esp-idf框架可以調(diào)用arduino IDEesp32庫(kù)嗎?

    我最近想移植一個(gè)基于arduinoIDE寫(xiě)的esp32 程序到idf框架下的項(xiàng)目,但是由于調(diào)用太多arduino上層封裝的庫(kù)導(dǎo)致移植失敗,請(qǐng)問(wèn)idf可以把arduino的庫(kù)類似與組件一樣添加到idf下的components嗎?
    發(fā)表于 06-24 07:07

    Arduino配置esp32失敗是為什么?怎么解決?

    我按照網(wǎng)上的的方法來(lái)在arduino里面配置esp32,但是最后在我選好開(kāi)發(fā)板后點(diǎn)擊編譯就報(bào)錯(cuò),這是為什么呢?
    發(fā)表于 06-18 06:27

    請(qǐng)問(wèn)如何進(jìn)行ESP32任意管腳設(shè)置成I2C在ARDUINO IDE?

    請(qǐng)問(wèn)如何進(jìn)行 ESP32 任意管腳設(shè)置成 I2C 在 ARDUINO IDE? 謝謝
    發(fā)表于 06-17 07:51

    請(qǐng)問(wèn)ESP32-S3-DEVKITC-1是否支持Arduino IDE 1.8.8編譯及燒錄?

    請(qǐng)問(wèn)ESP32-S3-DEVKITC-1是否支持Arduino IDE 1.8.8編譯及燒錄?使用Arduino IDE 1.8.8成功編譯
    發(fā)表于 06-05 07:57

    使用Arduino IDE 2.0開(kāi)發(fā)ESP32攝像頭模塊

    .cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing)。 安裝ESP32擴(kuò)展包 1. 運(yùn)行
    發(fā)表于 02-07 17:06

    如何從ESP32中刪除OTA?

    通過(guò) Arduino IDE 和示例等對(duì) ESP32 Dev 32 模塊進(jìn)行了一些 OTA 測(cè)試,一切正常。 現(xiàn)在我們想恢復(fù)到正常的串行/USB
    發(fā)表于 01-31 07:37
    主站蜘蛛池模板: 一本到高清视频在线观看三区| 国产精品人妻无码久久久奥特曼 | 国内精自品线一区91| 日本特黄的免费大片视频| 中国午夜伦理片| 精品国产自在天天线2019| 无码中文字幕av免费放| 耻辱诊察室1一4集动漫在线观看| 免费三级网址| 87.6在线收听| 老太婆风流特黄一级| 一级毛片全部免| 久久re亚洲在线视频| 亚洲青青草| 狠狠撩色姣姣综合久久| 羞羞影院午夜男女爽爽免费| 国产成人综合95精品视频免费| 日日噜噜大屁股熟妇| 成人片免费看| 日日摸夜夜添夜夜爽出水| 大地影院免费观看视频| 日本视频中文字幕一区二区| 赤兔CHINESE最新男18GUY| 色百度网址大全| 国产97精品久久久天天A片| 神马影院午夜理论二| 国产AV精品国语对白国产| 四川少妇大战4黑人| 国产成人精品永久免费视频| 四虎成人影院| 国产亚洲色婷婷久久精品99| 亚洲精品第一国产综合| 黑色丝袜美腿美女被躁翻了| 亚洲欧美成人在线| 久久久伊人影院| 2020久久精品永久免费| 男女作爱在线播放免费网页版观看 | 超碰caoporn| 日本熟妇乱人伦A片精品软件| 灌饱娇嫩H将军公主最新章节| 日韩精品亚洲专区在线电影不卡 |