女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

利用外部中斷方式來(lái)檢查按鍵KEY狀態(tài)

冬至子 ? 來(lái)源:醉里挑燈舞劍 ? 作者:Franze ? 2023-11-08 14:15 ? 次閱讀

我們學(xué)習(xí)了如何使用 MicropythonESP32 實(shí)現(xiàn) GPIO 輸入輸出功能。然而,這種方式存在一個(gè)問(wèn)題:代碼需要不斷地檢測(cè) IO 輸入口的變化,導(dǎo)致效率較低。特別是在一些特定場(chǎng)景下,例如某個(gè)按鍵可能一天只被按下一次,但我們?nèi)匀焕速M(fèi)了大量時(shí)間實(shí)時(shí)檢測(cè)按鍵情況。

為了解決這個(gè)問(wèn)題,我們引入了外部中斷的概念。顧名思義,當(dāng)按鍵被按下(產(chǎn)生中斷)時(shí),我們才去執(zhí)行相關(guān)功能。這大大節(jié)省了 CPU 的資源,因此中斷在實(shí)際項(xiàng)目中的應(yīng)用非常普遍。

在這個(gè)實(shí)驗(yàn)證中,我們利用中斷方式來(lái)檢查按鍵 KEY 狀態(tài),被按鍵被按下(產(chǎn)生外部中斷)后使 LED的亮滅狀態(tài)翻轉(zhuǎn)。

什么是外部中斷

外部中斷是一種硬件機(jī)制,用于通知 CPU 有事件發(fā)生。當(dāng)某個(gè)特定的條件滿足時(shí)(例如,一個(gè)按鍵被按下),CPU 會(huì)暫停當(dāng)前的任務(wù),轉(zhuǎn)而執(zhí)行與該事件相關(guān)的處理程序。這樣,我們可以在事件發(fā)生時(shí)才去處理,而不是持續(xù)地檢測(cè)事件是否發(fā)生。

材料準(zhǔn)備

  • ESP32開(kāi)發(fā)板
  • LED燈
  • 220歐姆電阻
  • 面包板
  • USB數(shù)據(jù)線
  • 電腦
  • 按鍵開(kāi)關(guān)(最好是自復(fù)位的)
    和前面那篇用的一樣的材料

連接電路

圖片

數(shù)字電路中的高低電平

在數(shù)字電路中,信號(hào)的傳輸是通過(guò)電壓的變化來(lái)實(shí)現(xiàn)的。上升沿、下降沿和高低電平是描述信號(hào)變化過(guò)程的重要概念。

1.高電平和低電平:

高電平和低電平是用來(lái)表示數(shù)字信號(hào)的兩個(gè)狀態(tài)。通常情況下,我們將邏輯“1”對(duì)應(yīng)的電壓值稱(chēng)為高電平(如3.3V或5V),將邏輯“0”對(duì)應(yīng)的電壓值稱(chēng)為低電平(如0V)。這兩個(gè)狀態(tài)之間的電壓差稱(chēng)為閾值電壓

2.上升沿:

上升沿是指信號(hào)從低電平跳變到高電平的過(guò)程。在這個(gè)過(guò)程中,信號(hào)的電壓從一個(gè)閾值電壓上升到另一個(gè)閾值電壓。上升沿通常用于表示一個(gè)事件的發(fā)生,例如按鍵按下、時(shí)鐘信號(hào)的上升等。

3.下降沿:

下降沿是指信號(hào)從高電平跳變到低電平的過(guò)程。在這個(gè)過(guò)程中,信號(hào)的電壓從一個(gè)閾值電壓下降到另一個(gè)閾值電壓。下降沿通常用于表示一個(gè)事件的結(jié)束,例如按鍵釋放、時(shí)鐘信號(hào)的下降等。

圖片

編寫(xiě)代碼

圖片

代碼簡(jiǎn)說(shuō)

外部中斷也是通過(guò) machine 模塊的 Pin 子模塊來(lái)配置,我們來(lái)看看其配構(gòu)造函數(shù)和使用方法:

構(gòu)造函數(shù)

KEY=machine.Pin(id,mode,pull) 構(gòu)建按鍵對(duì)象

  • id:引腳編號(hào)
  • mode:輸入輸出方式
  • pull:上下拉電阻配置

中斷使用方法

KEY.irq(handler,trigger) 配置中斷模式
handler:中斷執(zhí)行的回調(diào)函數(shù);
trigger: 觸發(fā)中斷的方式,共 4 種分別是

  • Pin.IRQ_FALLING(下降沿觸發(fā))
  • Pin.IRQ_RISING(上升沿觸發(fā))
  • Pin.IRQ_LOW_LEVEL(低電平觸發(fā))
  • Pin.IRQ_HIGH_LEVEL(高電平觸發(fā))

上升沿和下降沿觸發(fā)統(tǒng)稱(chēng)邊沿觸發(fā),根據(jù)前面的波形圖,我們可以選擇下降沿方式觸發(fā)外部中斷,也就是當(dāng)按鍵被按下的時(shí)候立即產(chǎn)生中斷。

整體思路中斷跟前面的實(shí)驗(yàn)類(lèi)似,在初始化中斷后,當(dāng)系統(tǒng)檢測(cè)到外部終端時(shí)候,執(zhí)行 LED 亮滅狀態(tài)反轉(zhuǎn)的代碼即可。

在以上代碼中,需要注意以下幾點(diǎn):

1.在函數(shù)fun中使用全局變量state時(shí),需要使用global state聲明,否則會(huì)在函數(shù)內(nèi)部創(chuàng)建一個(gè)新的同名變量,導(dǎo)致沖突。

2.在定義回調(diào)函數(shù)fun時(shí),需要將Pin對(duì)象KEY作為參數(shù)傳遞進(jìn)去。這樣可以確保在回調(diào)函數(shù)內(nèi)部可以訪問(wèn)到正確的引腳對(duì)象。

運(yùn)行程序

運(yùn)行代碼,每次按下按鍵 LED 狀態(tài)翻轉(zhuǎn)。

總結(jié)

從參考代碼來(lái)看,僅僅幾行代碼就實(shí)現(xiàn)了實(shí)驗(yàn)功能,而且相對(duì)于使用while True實(shí)時(shí)檢測(cè)函數(shù)來(lái)說(shuō),代碼的效率得到了極大的提升。外部中斷的應(yīng)用非常廣泛,不僅包括普通的按鍵輸入和電平檢測(cè),還有很多輸入設(shè)備,如傳感器,也是通過(guò)外部中斷方式來(lái)實(shí)時(shí)檢測(cè)的。這些在后面的章節(jié)中會(huì)詳細(xì)講解。

現(xiàn)在越來(lái)越注重青少年的科創(chuàng)活動(dòng),micropython,樹(shù)莓派arduino,圖形化編程學(xué)會(huì)了硬件控制的基礎(chǔ),這些平臺(tái)用起來(lái)大同小異。

聲明:本文內(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)投訴
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1595

    瀏覽量

    109371
  • 外部中斷
    +關(guān)注

    關(guān)注

    1

    文章

    133

    瀏覽量

    16107
  • 歐姆電阻
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    15728
  • 閾值電壓
    +關(guān)注

    關(guān)注

    0

    文章

    97

    瀏覽量

    51813
  • ESP32
    +關(guān)注

    關(guān)注

    20

    文章

    1008

    瀏覽量

    18857
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Linux下如何使用中斷方式來(lái)驅(qū)動(dòng)按鍵

    Linux下的按鍵輸入驅(qū)動(dòng)開(kāi)發(fā)模板一文中介紹了基本的按鍵輸入捕獲流程,這里將進(jìn)一步介紹如何使用中斷方式來(lái)驅(qū)動(dòng)
    發(fā)表于 07-29 08:59 ?1104次閱讀

    按鍵KEY1作為外部中斷,分別測(cè)試上升沿和下降沿,發(fā)現(xiàn)觸發(fā)方式和程序設(shè)置的方式對(duì)不上是為什么?

    按鍵KEY1作為外部中斷,分別測(cè)試上升沿和下降沿,發(fā)現(xiàn)觸發(fā)方式和程序設(shè)置的方式 對(duì)不上?學(xué)習(xí)了
    發(fā)表于 04-22 06:25

    基于STM32的按鍵控制與外部中斷實(shí)例詳解

    [tr=transparent] //======================================================// **基于STM32的按鍵控制與外部中斷實(shí)例
    發(fā)表于 07-02 07:33

    基于STM32的按鍵控制與外部中斷實(shí)例詳解

    [tr=transparent] //======================================================// **基于STM32的按鍵控制與外部中斷實(shí)例
    發(fā)表于 07-06 08:43

    通過(guò)按鍵外部中斷來(lái)改變對(duì)應(yīng)LED的狀態(tài)

    使用標(biāo)準(zhǔn)庫(kù)實(shí)現(xiàn)本次功能的源代碼已上傳:STM32F103ZET6IDE: MDK-ARM V5 +STM32CubeMX5.0.0本次實(shí)現(xiàn)的功能是通過(guò)按鍵外部中斷來(lái)改變對(duì)應(yīng)LED的
    發(fā)表于 08-13 08:44

    如何利用外部中斷來(lái)實(shí)現(xiàn)按鍵控制LED燈的亮滅?

    如何利用外部中斷來(lái)實(shí)現(xiàn)按鍵控制LED燈的亮滅?
    發(fā)表于 11-24 06:22

    按鍵控制外部中斷實(shí)現(xiàn)LED亮滅的方法

    直連P3.3外部中斷1的管腳,當(dāng)按鍵按下則P3.3腳就會(huì)被拉低,從而觸發(fā)外部中斷而改變LED狀態(tài)
    發(fā)表于 12-06 08:19

    通過(guò)外部中斷方式控制LED1的狀態(tài)

    1【問(wèn)答題】 (20分)通過(guò)外部中斷方式控制LED1的狀態(tài)。初始狀態(tài)LED1熄滅,按一下KEY1
    發(fā)表于 01-25 06:14

    使用中斷方式來(lái)進(jìn)行檢測(cè)按鍵

    使用中斷方式來(lái)進(jìn)行檢測(cè)按鍵實(shí)驗(yàn)?zāi)康谋竟?jié)實(shí)驗(yàn)?zāi)康臑橥ㄟ^(guò)中斷方式
    發(fā)表于 02-09 07:09

    STM32按鍵掃描/按鍵中斷/外部中斷資料下載

    電子發(fā)燒友網(wǎng)為你提供STM32按鍵掃描/按鍵中斷/外部中斷資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料
    發(fā)表于 04-13 08:45 ?23次下載
    STM32<b class='flag-5'>按鍵</b>掃描/<b class='flag-5'>按鍵</b><b class='flag-5'>中斷</b>/<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>資料下載

    實(shí)驗(yàn)一——外部中斷以及數(shù)碼管顯示

    直連P3.3外部中斷1的管腳,當(dāng)按鍵按下則P3.3腳就會(huì)被拉低,從而觸發(fā)外部中斷而改變LED狀態(tài)
    發(fā)表于 11-23 18:06 ?6次下載
    實(shí)驗(yàn)一——<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>以及數(shù)碼管顯示

    MSP432(Keil5)——2.按鍵外部中斷驅(qū)動(dòng)

    本次按鍵實(shí)驗(yàn)是采用了板載的兩個(gè)按鍵分別對(duì)應(yīng)的P1.1與P1.4口,具體遷移到其他IO口的外部中斷請(qǐng)移步原理圖。實(shí)驗(yàn)現(xiàn)象:按下按鍵會(huì)翻轉(zhuǎn)板載L
    發(fā)表于 12-05 12:36 ?10次下載
    MSP432(Keil5)——2.<b class='flag-5'>按鍵</b>及<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>驅(qū)動(dòng)

    K210應(yīng)用4-使用中斷方式檢測(cè)按鍵

    使用中斷方式來(lái)進(jìn)行檢測(cè)按鍵實(shí)驗(yàn)?zāi)康谋竟?jié)實(shí)驗(yàn)?zāi)康臑橥ㄟ^(guò)中斷方式
    發(fā)表于 12-05 15:21 ?9次下載
    K210應(yīng)用4-使用<b class='flag-5'>中斷</b><b class='flag-5'>方式</b>檢測(cè)<b class='flag-5'>按鍵</b>

    STM32 HAL庫(kù) CubeMX教程(四)按鍵外部中斷

    STM32 HAL庫(kù) CubeMX教程(四)外部中斷實(shí)驗(yàn)內(nèi)容NVIC(嵌套向量中斷控制器)外部中斷簡(jiǎn)介CubeMX配置
    發(fā)表于 01-14 15:11 ?10次下載
    STM32 HAL庫(kù) CubeMX教程(四)<b class='flag-5'>按鍵</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM8學(xué)習(xí)筆記---按鍵KEY

    按鍵按下時(shí)為低電平。對(duì)于KEY來(lái)說(shuō),IO口為輸入口,IO口要讀取外部電平狀態(tài),根據(jù)電平狀態(tài)來(lái)
    發(fā)表于 01-18 08:43 ?5次下載
    STM8學(xué)習(xí)筆記---<b class='flag-5'>按鍵</b><b class='flag-5'>KEY</b>