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

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

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

3天內不再提示

利用外部中斷方式來檢查按鍵KEY狀態

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

我們學習了如何使用 MicropythonESP32 實現 GPIO 輸入輸出功能。然而,這種方式存在一個問題:代碼需要不斷地檢測 IO 輸入口的變化,導致效率較低。特別是在一些特定場景下,例如某個按鍵可能一天只被按下一次,但我們仍然浪費了大量時間實時檢測按鍵情況。

為了解決這個問題,我們引入了外部中斷的概念。顧名思義,當按鍵被按下(產生中斷)時,我們才去執行相關功能。這大大節省了 CPU 的資源,因此中斷在實際項目中的應用非常普遍。

在這個實驗證中,我們利用中斷方式來檢查按鍵 KEY 狀態,被按鍵被按下(產生外部中斷)后使 LED的亮滅狀態翻轉。

什么是外部中斷

外部中斷是一種硬件機制,用于通知 CPU 有事件發生。當某個特定的條件滿足時(例如,一個按鍵被按下),CPU 會暫停當前的任務,轉而執行與該事件相關的處理程序。這樣,我們可以在事件發生時才去處理,而不是持續地檢測事件是否發生。

材料準備

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

連接電路

圖片

數字電路中的高低電平

在數字電路中,信號的傳輸是通過電壓的變化來實現的。上升沿、下降沿和高低電平是描述信號變化過程的重要概念。

1.高電平和低電平:

高電平和低電平是用來表示數字信號的兩個狀態。通常情況下,我們將邏輯“1”對應的電壓值稱為高電平(如3.3V或5V),將邏輯“0”對應的電壓值稱為低電平(如0V)。這兩個狀態之間的電壓差稱為閾值電壓

2.上升沿:

上升沿是指信號從低電平跳變到高電平的過程。在這個過程中,信號的電壓從一個閾值電壓上升到另一個閾值電壓。上升沿通常用于表示一個事件的發生,例如按鍵按下、時鐘信號的上升等。

3.下降沿:

下降沿是指信號從高電平跳變到低電平的過程。在這個過程中,信號的電壓從一個閾值電壓下降到另一個閾值電壓。下降沿通常用于表示一個事件的結束,例如按鍵釋放、時鐘信號的下降等。

圖片

編寫代碼

圖片

代碼簡說

外部中斷也是通過 machine 模塊的 Pin 子模塊來配置,我們來看看其配構造函數和使用方法:

構造函數

KEY=machine.Pin(id,mode,pull) 構建按鍵對象

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

中斷使用方法

KEY.irq(handler,trigger) 配置中斷模式
handler:中斷執行的回調函數;
trigger: 觸發中斷的方式,共 4 種分別是

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

上升沿和下降沿觸發統稱邊沿觸發,根據前面的波形圖,我們可以選擇下降沿方式觸發外部中斷,也就是當按鍵被按下的時候立即產生中斷。

整體思路中斷跟前面的實驗類似,在初始化中斷后,當系統檢測到外部終端時候,執行 LED 亮滅狀態反轉的代碼即可。

在以上代碼中,需要注意以下幾點:

1.在函數fun中使用全局變量state時,需要使用global state聲明,否則會在函數內部創建一個新的同名變量,導致沖突。

2.在定義回調函數fun時,需要將Pin對象KEY作為參數傳遞進去。這樣可以確保在回調函數內部可以訪問到正確的引腳對象。

運行程序

運行代碼,每次按下按鍵 LED 狀態翻轉。

總結

從參考代碼來看,僅僅幾行代碼就實現了實驗功能,而且相對于使用while True實時檢測函數來說,代碼的效率得到了極大的提升。外部中斷的應用非常廣泛,不僅包括普通的按鍵輸入和電平檢測,還有很多輸入設備,如傳感器,也是通過外部中斷方式來實時檢測的。這些在后面的章節中會詳細講解。

現在越來越注重青少年的科創活動,micropython,樹莓派arduino,圖形化編程學會了硬件控制的基礎,這些平臺用起來大同小異。

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

    關注

    22

    文章

    1595

    瀏覽量

    109448
  • 外部中斷
    +關注

    關注

    1

    文章

    133

    瀏覽量

    16130
  • 歐姆電阻
    +關注

    關注

    0

    文章

    71

    瀏覽量

    15740
  • 閾值電壓
    +關注

    關注

    0

    文章

    97

    瀏覽量

    51850
  • ESP32
    +關注

    關注

    21

    文章

    1012

    瀏覽量

    18984
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    Linux下如何使用中斷方式驅動按鍵

    Linux下的按鍵輸入驅動開發模板一文中介紹了基本的按鍵輸入捕獲流程,這里將進一步介紹如何使用中斷方式驅動
    發表于 07-29 08:59 ?1109次閱讀

    按鍵KEY1作為外部中斷,分別測試上升沿和下降沿,發現觸發方式和程序設置的方式對不上是為什么?

    按鍵KEY1作為外部中斷,分別測試上升沿和下降沿,發現觸發方式和程序設置的方式 對不上?學習了
    發表于 04-22 06:25

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

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

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

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

    通過按鍵外部中斷改變對應LED的狀態

    使用標準庫實現本次功能的源代碼已上傳:STM32F103ZET6IDE: MDK-ARM V5 +STM32CubeMX5.0.0本次實現的功能是通過按鍵外部中斷改變對應LED的
    發表于 08-13 08:44

    如何利用外部中斷實現按鍵控制LED燈的亮滅?

    如何利用外部中斷實現按鍵控制LED燈的亮滅?
    發表于 11-24 06:22

    按鍵控制外部中斷實現LED亮滅的方法

    直連P3.3外部中斷1的管腳,當按鍵按下則P3.3腳就會被拉低,從而觸發外部中斷而改變LED狀態
    發表于 12-06 08:19

    通過外部中斷方式控制LED1的狀態

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

    使用中斷方式進行檢測按鍵

    使用中斷方式進行檢測按鍵實驗目的本節實驗目的為通過中斷方式
    發表于 02-09 07:09

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

    電子發燒友網為你提供STM32按鍵掃描/按鍵中斷/外部中斷資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料
    發表于 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>資料下載

    實驗一——外部中斷以及數碼管顯示

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

    MSP432(Keil5)——2.按鍵外部中斷驅動

    本次按鍵實驗是采用了板載的兩個按鍵分別對應的P1.1與P1.4口,具體遷移到其他IO口的外部中斷請移步原理圖。實驗現象:按下按鍵會翻轉板載L
    發表于 12-05 12:36 ?10次下載
    MSP432(Keil5)——2.<b class='flag-5'>按鍵</b>及<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>驅動

    K210應用4-使用中斷方式檢測按鍵

    使用中斷方式進行檢測按鍵實驗目的本節實驗目的為通過中斷方式
    發表于 12-05 15:21 ?9次下載
    K210應用4-使用<b class='flag-5'>中斷</b><b class='flag-5'>方式</b>檢測<b class='flag-5'>按鍵</b>

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

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

    STM8學習筆記---按鍵KEY

    按鍵按下時為低電平。對于KEY來說,IO口為輸入口,IO口要讀取外部電平狀態,根據電平狀態
    發表于 01-18 08:43 ?5次下載
    STM8學習筆記---<b class='flag-5'>按鍵</b><b class='flag-5'>KEY</b>
    主站蜘蛛池模板: 狠狠色噜狠狠狠狠 | 国产a三级三级三级 | 久久国产午夜精品理论片34页 | 五月国产综合视频在线观看 | 国内外精品免费视频 | 色人人| 夜夜夜操 | 久久国产视频网站 | 婷婷丁香五 | 你懂的在线免费观看 | 超级香蕉97视频在线观看一区 | 欧美综合天天夜夜久久 | 婷婷丁香久久 | bt种子搜索在线 | 国产一级毛片午夜 | 丁香婷婷亚洲 | 免费人成在线观看网站 | 中文字幕一区二区三区免费视频 | 年轻护士女三级 | 免费a级午夜绝情美女视频 免费jlzzjlzz在线播放视频 | 亚洲乱码卡一卡二卡三永久 | 性欧美护士18xxxxhd | 人人精品久久 | 激情欧美在线 | re99热| 午夜黄色小视频 | 久久久久久噜噜噜久久久精品 | 日韩一级免费视频 | 欧美激情xxxx性bbbb | 欧美特黄视频在线观看 | wwwxx在线| 国产免费啪啪 | 五月天婷婷网亚洲综合在线 | 性孕妇洗澡video国产 | 亚洲欧美在线视频免费 | 国产精品资源在线观看网站 | 三级视频网站 | 欧美一级看片免费观看视频在线 | 免费能看的黄色网址 | 五月天免费在线播放 | 黄色三级在线看 |