在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

ESP32學習筆記:GPIO數(shù)字輸入與數(shù)字輸出

CHANBAEK ? 來源:跳動的字節(jié) ? 作者:曉宇 ? 2023-07-13 17:09 ? 次閱讀

今天我們來點燈。

多路復(fù)用器與GPIO矩陣

ESP32芯片有34個物理 GPIO Pad,每個Pad可以當作通用IO,也可以當作外設(shè)的引腳,GPIO 引腳通過非常復(fù)雜的 GPIO 矩陣互連,這基本上就是是一個多路復(fù)用器,我們可以非常靈活的選擇哪些GPIO引腳在內(nèi)部路由到哪個外設(shè)的信號,大家可以看下圖:

圖片

IO_MUX 中每個 GPIO pad 有一組寄存器。每個 pad 可以配置成 GPIO 功能(連接 GPIO 交換矩陣)或者 直連功能。

有一些高速信號如以太網(wǎng)SDIO、SPI、JTAG、UART 等會旁路 GPIO 交換矩陣以實現(xiàn)更好的高頻數(shù)字特性。所以高速信號會直接通過 IO_MUX 輸入和輸出,這樣比使用 GPIO 交換矩陣的靈活度要低。

不同于STM32的簡單復(fù)用,ESP32的多路復(fù)用器,使設(shè)計人員可以靈活地更改芯片內(nèi)部的 GPIO 引腳連接并將其路由到任何信號,這樣硬件設(shè)計上,布線也方便的多。

圖片

通過 IO_MUX、GPIO 交換矩陣的外設(shè)輸入

圖片

通過 GPIO 交換矩陣輸出信號

ESP32還有18個 GPIO 管腳具有低功耗(低功耗 RTC)和模擬功能,這個我們后面設(shè)計到具體案例再細說。

完整管腳說明需要去參考的樂鑫官方《ESP32 技術(shù)規(guī)格書》

特別提醒

ESP32的IO12上電時的電平會決定外部flash的工作電壓,上電時該腳為高則認為flash工作于1.8V,為低則認為flash工作于3.3V。常用的模塊該腳內(nèi)部已下拉,即flash是工作于3.3V的,若外部使用強上拉模塊就可能工作異常了。

硬件連接

圖片

數(shù)字輸出功能

這里我們就以一個LED燈來演示,首先,我們需要在setup()中初始化對應(yīng)的IO在輸出模式,使用pinMode函數(shù),第一個參數(shù)上對應(yīng)的IO序號,第二個是IO的模式

pinMode(4, OUTPUT);

然后可以通過digitalWrite()函數(shù)改變數(shù)字引腳的電平狀態(tài),HIGH輸出高平,LOW輸出低電平

digitalWrite(4, HIGH); // 輸出高電平
digitalWrite(4, LOW);  // 輸出低電平

所有 ESP32 GPIO 引腳都可以在輸入或輸出模式下運行。引腳34-39只能用于輸入。還有其他一些引腳也有其它特性,這個我們現(xiàn)在也沒必要太糾結(jié),用到的時候再去看就好了。

數(shù)字輸入功能

在輸入模式下,我們可以通過IO來讀取外部數(shù)字信號,我們這里用按鍵來表示。

跟輸出模式一樣,我們在setup()中初始化對應(yīng)的IO在輸入模式,也使用pinMode函數(shù)

pinMode(2, INPUT);

然后通過digitalRead(GPIO_pin)就可以讀取對應(yīng)IO的電平了。

代碼示例

下面的代碼我們定義了2個GPIO引腳。GPIO2用于按鍵輸入,GPIO4用于LED輸出。

初始化之后,我們在loop()中不斷的讀取按鍵的電平狀態(tài),并賦值給LED,實現(xiàn)按鍵下去燈熄滅,松開燈點亮的效果。

#define LED_GPIO 4
#define BTN_GPIO 2
 
int BTN_State = 0; //按鍵狀態(tài)
 
void setup()
{
  pinMode(LED_GPIO, OUTPUT);
  pinMode(BTN_GPIO, INPUT);
}
 
void loop()
{
  // 讀取按鍵狀態(tài)
  BTN_State = digitalRead(BTN_GPIO);
  // 把按鍵狀態(tài)做為LED燈的輸出
  digitalWrite(LED_GPIO, BTN_State);
}

我們按照前面的教程編譯程序,刷入開發(fā)板,看下效果:

圖片

接下來我們用中斷的方式實現(xiàn)一下:

attachInterrupt(uint8_t pin, void ()(void), int mode)函數(shù)用來配置中斷功能:

  • 參數(shù)一,GPIO引腳號
  • 參數(shù)二,中斷回調(diào)函數(shù)
  • 參數(shù)三,中斷觸發(fā)模式(RISING、FALLING、CHANGE等)

參數(shù)三這個可以設(shè)置各種模式,例如上升沿觸發(fā),下降沿出發(fā),任意沿觸發(fā),電平信號等等模式。

我們用上面的例子改一下:

#define LED_GPIO 4
#define BTN_GPIO 2
 
int BTN_State = 0; //按鍵狀態(tài)

//中斷回調(diào)函數(shù)
void bt_callBack(void)
{
  BTN_State = digitalRead(BTN_GPIO); // 讀取按鍵狀態(tài)
  digitalWrite(LED_GPIO, BTN_State); // 把按鍵狀態(tài)做為LED燈的輸出
}
 
void setup()
{
  pinMode(LED_GPIO, OUTPUT); //LED輸出模式
  pinMode(BTN_GPIO, INPUT); //輸入上拉模式
  attachInterrupt(BTN_GPIO, bt_callBack, CHANGE); //使能中斷
}
 
void loop()
{  
}

主程序中不用做任何事情了,中斷檢測到有按鍵按下或松開(任意跳變沿),就會觸發(fā)執(zhí)行中斷回調(diào)函數(shù),然后把結(jié)果在LED上輸出。

ESP32的GPIO外設(shè)相對其它單片機,功能還是略微復(fù)雜的,但是不管是SDK的開發(fā)還是Arduino方式,官方都幫我們寫好相應(yīng)的庫了,復(fù)雜的配置都已經(jīng)定義好了,我們直接調(diào)用即可,怎么樣,是不是非常簡單?

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

    關(guān)注

    40

    文章

    5449

    瀏覽量

    172176
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5359

    瀏覽量

    120796
  • 復(fù)用器
    +關(guān)注

    關(guān)注

    1

    文章

    709

    瀏覽量

    28351
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1215

    瀏覽量

    52226
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17414
收藏 人收藏

    評論

    相關(guān)推薦

    ESP8266 NodeMCU怎樣讀取數(shù)字輸入數(shù)字輸出點亮一個led呢

    ESP8266 NodeMCU 怎樣讀取數(shù)字輸入數(shù)字輸出點亮一個led呢?ESP8266 No
    發(fā)表于 11-01 06:20

    5、ESP8266 NodeMCU 數(shù)字輸入數(shù)字輸出

    ESP8266 NodeMCU 怎樣讀取數(shù)字輸入數(shù)字輸出點亮一個led呢?ESP8266 No
    發(fā)表于 10-25 18:36 ?17次下載
    5、<b class='flag-5'>ESP</b>8266 NodeMCU <b class='flag-5'>數(shù)字</b><b class='flag-5'>輸入</b>和<b class='flag-5'>數(shù)字</b><b class='flag-5'>輸出</b>

    ESP32 開發(fā)筆記(四)LVGL控件學習 Window 窗口控件 X

    ESP32 開發(fā)筆記(四)LVGL控件學習 Window 窗口控件 X
    發(fā)表于 11-14 09:06 ?6次下載
    <b class='flag-5'>ESP32</b> 開發(fā)<b class='flag-5'>筆記</b>(四)LVGL控件<b class='flag-5'>學習</b> Window 窗口控件 X

    [ESP32]學習筆記02

    [ESP32學習筆記02]使用ViusalStudio2017開發(fā)ESP32、按鍵輸入檢測前言一、安裝Visual Studio 2017二
    發(fā)表于 12-03 17:36 ?23次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>02

    esp32學習之按鍵檢測gpio中斷

    esp32學習gpio中斷前言流程選定gpiogpio配置設(shè)置回調(diào)函數(shù)注冊中斷處理程序前言最近在做一個按鍵檢測,按鍵檢測有兩種方法,一種是輪詢法,即在rtos中建立一個任務(wù),然后在死循環(huán)中判斷按鍵
    發(fā)表于 12-04 16:21 ?14次下載
    <b class='flag-5'>esp32</b><b class='flag-5'>學習</b>之按鍵檢測<b class='flag-5'>gpio</b>中斷

    ZYNQ學習筆記_GPIO輸入輸出

    ZYNQ學習筆記_GPIOGPIO介紹MIO介紹EMIO介紹控制GPIO接口的寄存器原理GPIO介紹GPIO的英文全稱為General-pu
    發(fā)表于 12-04 19:36 ?10次下載
    ZYNQ<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>_<b class='flag-5'>GPIO</b>之<b class='flag-5'>輸入輸出</b>

    ESP32入門之GPIO:點亮一盞LED燈

    物理GPIO引腳,除了一些具有特殊用途的GPIO外,大部分GPIO都可以復(fù)用。本文就通過點亮一盞LED燈并通過一個按鍵控制其亮滅來簡單學習如何控制E
    發(fā)表于 12-07 17:06 ?10次下載
    <b class='flag-5'>ESP32</b>入門之<b class='flag-5'>GPIO</b>:點亮一盞LED燈

    [ESP32]學習筆記04

    Analog-to-Digital Converter(模數(shù)轉(zhuǎn)換器)的使用今天我們學習ESP32提供的ADC外設(shè)的使用,ESP32的每個ADC單元都支持兩種模式,單次讀取和連續(xù)讀取(DMA),本次
    發(fā)表于 12-22 19:02 ?9次下載
    [<b class='flag-5'>ESP32</b>]<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>04

    ESP32ESP-IDF 教學(八)—— 模數(shù)轉(zhuǎn)換器(ADC)

    ESP32ESP-IDF 學習筆記(七)——模數(shù)轉(zhuǎn)換器(ADC)文章目錄ESP32ESP
    發(fā)表于 12-22 19:08 ?38次下載
    <b class='flag-5'>ESP32</b> 之 <b class='flag-5'>ESP</b>-IDF 教學(八)—— 模數(shù)轉(zhuǎn)換器(ADC)

    SPI主線協(xié)議——ESP32學習筆記

    目錄SPI主線協(xié)議——ESP32學習筆記零、前言一、什么是SPI?二、通信過程?三、極性和相位四、總結(jié)SPI主線協(xié)議——ESP32學習
    發(fā)表于 12-22 19:23 ?18次下載
    SPI主線協(xié)議——<b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>

    STM32學習筆記---GPIO

    STM32的學習筆記GPIO我使用的是STM32F401ZGT6,有7組IO口,每組16個引腳,共112個引腳。因為太菜了,確實容易出錯,還請賜教參考官方文檔:八種IO口模式區(qū)別結(jié)構(gòu)原理該單片機在
    發(fā)表于 01-13 16:31 ?6次下載
    STM32<b class='flag-5'>學習</b><b class='flag-5'>筆記</b>---<b class='flag-5'>GPIO</b>

    ESP32 單片機學習筆記 - 04 - ADC和定時器

    ESP32 單片機學習筆記 - 04 - ADC和定時器一、模擬數(shù)字轉(zhuǎn)換器 ADC編程指南:Analog to Digital Converter。數(shù)據(jù)手冊:
    發(fā)表于 01-17 13:18 ?11次下載
    <b class='flag-5'>ESP32</b> 單片機<b class='flag-5'>學習</b><b class='flag-5'>筆記</b> - 04 - ADC和定時器

    ESP32學習筆記:雙核

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

    ESP32學習筆記:WiFi

    今天我們來說說ESP32 的WiFi。
    的頭像 發(fā)表于 07-15 16:20 ?4104次閱讀
    <b class='flag-5'>ESP32</b><b class='flag-5'>學習</b><b class='flag-5'>筆記</b>:WiFi

    數(shù)字輸入輸出原理是什么

    是General-purpose input/output,大部分情況下,我們都會用簡稱GPIO GPIO的功能,主要是指這個管腳可以作為數(shù)字信號的輸入或者
    的頭像 發(fā)表于 11-27 11:45 ?1037次閱讀
    <b class='flag-5'>數(shù)字</b><b class='flag-5'>輸入</b>與<b class='flag-5'>輸出</b>原理是什么
    主站蜘蛛池模板: 人与牲动交xxxxbbbb高清| 久久极品| 亚洲三级在线视频| 2020国产v亚洲v天堂高清| 99热成人精品热久久669| 中文字幕在线不卡| 天天综合天天综合| 午夜剧场毛片| 色戒真做gif动图| 久久精品福利| 日本人善交69xxx| 亚洲一二| 福利一区二区在线观看| 亚洲乱亚洲乱妇41p| 色综合五月婷婷| 免费看吻胸亲嘴激烈网站| 国产你懂的在线观看| 中文字幕天天干| 视频在线观看高清免费看| 国产全部理论片线观看| 狂野欧美性色xo影院| 乱说欲小说又粗又长| 新版天堂中文资源官网| 日韩高清性爽一级毛片免费| 美女色黄一男一女| www.亚洲.com| 欧美 ed2k| 成人欧美一区二区三区白人| 福利视频一区二区| 色中色综合| 黄色在线视频免费看| 白嫩美女在线啪视频观看| 色片免费网站| 午夜黄网| 俄罗斯久久| 日本天天色| 国产精品成人在线播放| 四色成人网| 18满xo影院视频免费体验区| 亚洲a影院| 狠狠色婷婷|