日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

基于GPIO的按鍵板實現(xiàn)方案

454398 ? 來源:csdn ? 作者:NutriYang ? 2020-10-18 11:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

介紹簡單的ADC實現(xiàn),需要IC提供一個額外的ADC。但出于IC成本的考慮,無法提供這個的ADC時,但提供了多個額外的GPIO(General Purpose Input Output:雙向的:可以為輸入/輸出,只有兩個狀態(tài)High/Low),就可以使用本篇的實現(xiàn)方法了。

基于GPIO的按鍵板

基于GPIO的按鍵板實現(xiàn),需要提供額外的GPIO口供使用。GPIO口足夠多的話可以一個按鍵對應(yīng)一個GPIO,不夠多的時候可以使用矩陣掃描方式實現(xiàn),若可供使用的GPIO連矩陣掃描方式都不滿足,還可以增加二極管來進(jìn)一步擴(kuò)展成2個GPIO實現(xiàn)6個按鍵,本節(jié)將簡單介紹這些方法。另外還可以通過擴(kuò)展GPIO的方法來實現(xiàn),將在下一篇幅中專門介紹。

嵌入式開發(fā)中,GPIO是最常用的控制接口,普通GPIO只具有High/Low兩個狀態(tài),我們可以對其進(jìn)行Read/Write操作。

1:足夠多的GPIO供使用

則每個按鍵對應(yīng)一個GPIO口,電路設(shè)計可以保證:無按鍵動作GPIO口為Low,有按鍵動作GPIO口為High,或者相反。軟件設(shè)計只需要逐個掃描每個GPIO口的狀態(tài),就可以知道某個按鍵是否有動作。

2:有限的GPIO供使用:使用矩陣掃描按鍵方式是最常見的方案。

其原理如下:任意兩個GPIO之間連接一個按鍵,比如GPIO_1 & GPIO_2,其默認(rèn)狀態(tài)為Low,按鍵按下的話,兩者就連通了,這就意味著,我們可以先給GPIO_1一個High信號,接著去讀取GOIO_2,如果得到High,則這個按鍵被按下了,否則就是沒有按鍵動作。

數(shù)學(xué)告訴我們,基于這種方案的N個GPIO口,最多可以實現(xiàn)N*(N-1)/2個按鍵,也就是N的組合數(shù)。如下圖:4個GPIO(A/B/C/D)實現(xiàn)6(KEY_1…KEY_6)個按鍵的原理圖

變成也是比較簡單了,給個C代碼如下:

這里通過適當(dāng)?shù)牧鞒淘O(shè)計,可以使得代碼緊湊有序。在按鍵比較少的情況下,一個挨著一個的去讀寫的方法也不錯,但在較多按鍵的時候,上面代碼的流程設(shè)計就比較具有優(yōu)勢了。能夠在1分鐘內(nèi),看明白為什么使用 i*k+k-1 作為返回索引,我相信你的邏輯能力很OK。

3:進(jìn)一步擴(kuò)展---2個GPIO實現(xiàn)6個按鍵

如果在你的設(shè)計中,GPIO口的數(shù)量很有限,不能滿足矩陣掃描方式的需要,那么你有兩種選擇:1 擴(kuò)展GPIO口,下一篇幅中將專門討論;2 增加一些二極管來進(jìn)一步擴(kuò)充矩陣掃描方式的能力。我們這里討論一個2個GPIO實現(xiàn)6個按鍵的方法,原理圖如下:

這種實現(xiàn)方法實際上就是利用了二極管的單向?qū)ㄌ匦?,使得我們可以區(qū)分更多的按鍵,分析如下:

1:Write GPIO_1=1 & GPIO_2=1,接著Read if GPIO_1==0 & GPIO_2==0,則為 KEY_3;

if GPIO_1==0 & GPIO_2==1,則為 KEY_1;

if GPIO_1==1 & GPIO_2==0,則為 KEY_2;

2:Write GPIO_1=0 & GPIO_2=1, 接著Read if GPIO_2==0,則為 KEY_4 or KEY_6;

需要進(jìn)一步判斷:Write GPIO_1=1 & GPIO_2=0 然后Read:if GPIO_1==0 則為 KEY_4;

if GPIO_1==1 則為 KEY_6;

3:反序執(zhí)行步驟2,可以區(qū)分出 KEY4 & KEY5。

明白了原理,軟件編程實現(xiàn)就比較簡單了,給出一個實現(xiàn)如下:

在這個編程實現(xiàn)里,在寫操作之后,可能需要適當(dāng)?shù)腄elay以使得其狀態(tài)穩(wěn)定;若是基于總線的嵌入式系統(tǒng),也需要在函數(shù)退出前釋放總線。

3:總結(jié)與討論

基于矩陣掃描方式的按鍵板實現(xiàn),是很最常用的。在GPIO口比較緊缺的情況下,可以通過在電路中適當(dāng)增加幾個二極管來解決。如果這樣還不能解決,就必須設(shè)法擴(kuò)展GPIO了,稍后討論。

下面給出了一個很不錯的 矩陣掃描+二極管擴(kuò)展 的電路圖,你能為它寫一個驅(qū)動嗎?相當(dāng)具有挑戰(zhàn)性哦,試試看吧……

編輯:hfy

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

    關(guān)注

    1

    文章

    450

    瀏覽量

    36277
  • 軟件編程
    +關(guān)注

    關(guān)注

    1

    文章

    42

    瀏覽量

    11759
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1334

    瀏覽量

    56478
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

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

    昉·星光開發(fā)板按鍵處理

    本次課程為昉·星光開發(fā)板IoT開發(fā)系列課程的第二講,將帶領(lǐng)同學(xué)們在昉·星光開發(fā)板上,通過GPIO進(jìn)行按鍵處理。 一、學(xué)習(xí)目標(biāo) 學(xué)習(xí)昉·星光開發(fā)板GPIO輸入和普通按鍵處理 學(xué)習(xí)昉·
    發(fā)表于 03-26 06:31

    深入解析RK平臺GPIO驅(qū)動:從原理到調(diào)試,開發(fā)者必看指南

    GPIO(通用輸入輸出)作為嵌入式系統(tǒng)中最基礎(chǔ)也最常用的硬件接口,是連接芯片與外部設(shè)備的 “橋梁”。從簡單的 LED 控制、按鍵檢測,到復(fù)雜的傳感器通信,都離不開 GPIO 的支持。在瑞芯微(RK
    的頭像 發(fā)表于 02-03 15:53 ?1286次閱讀
    深入解析RK平臺<b class='flag-5'>GPIO</b>驅(qū)動:從原理到調(diào)試,開發(fā)者必看指南

    嵌入式新手必看!GPIO調(diào)試從0到1:計算、操作、排錯全指南

    在嵌入式開發(fā)中,GPIO(通用輸入輸出口)是最基礎(chǔ)也最常用的硬件接口 —— 小到控制一顆 LED 亮滅、讀取一個按鍵狀態(tài),大到驅(qū)動傳感器、控制外設(shè),都離不開 GPIO。但對新手來說,“怎么確定
    的頭像 發(fā)表于 02-01 16:55 ?4223次閱讀
    嵌入式新手必看!<b class='flag-5'>GPIO</b>調(diào)試從0到1:計算、操作、排錯全指南

    【瑞薩RA × Zephyr評測】LED、按鍵和UART

    實現(xiàn)在Zephyr操作系統(tǒng)下按鍵控制 LED 的開關(guān)狀態(tài),并通過 UART 輸出按鍵事件日志,驗證 GPIO 和串口通信功能。
    的頭像 發(fā)表于 01-10 10:21 ?2615次閱讀
    【瑞薩RA × Zephyr評測】LED、<b class='flag-5'>按鍵</b>和UART

    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板實現(xiàn)GPIO功能復(fù)用

    IOMUX(引腳功能復(fù)用)是芯片廠商為高效利用有限引腳資源而設(shè)計的關(guān)鍵技術(shù),它允許單個物理引腳通過軟件靈活配置為多種功能(如GPIO、UART、I2C等)。鑒于不同SoC的配置方式各異,本文將以
    的頭像 發(fā)表于 12-29 10:37 ?1551次閱讀
    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)<b class='flag-5'>板實現(xiàn)</b><b class='flag-5'>GPIO</b>功能復(fù)用

    如何進(jìn)行按鍵檢測

    如何進(jìn)行按鍵檢測 檢測按鍵有中斷方式和GPIO查詢方式兩種。推薦大家用GPIO查詢方式。 從裸機(jī)的角度分析 [x] 1.1 中斷方式:中斷方式可以快速地檢測到
    發(fā)表于 12-10 06:03

    基于迅為RK3588開發(fā)板實現(xiàn)高性能機(jī)器狗主控解決方案-?AI能力實戰(zhàn):YOLOv5目標(biāo)檢測例程

    基于迅為RK3588開發(fā)板實現(xiàn)高性能機(jī)器狗主控解決方案-?AI能力實戰(zhàn):YOLOv5目標(biāo)檢測例程
    的頭像 發(fā)表于 11-28 11:32 ?1739次閱讀
    基于迅為RK3588開發(fā)<b class='flag-5'>板實現(xiàn)</b>高性能機(jī)器狗主控解決<b class='flag-5'>方案</b>-?AI能力實戰(zhàn):YOLOv5目標(biāo)檢測例程

    如何調(diào)用FPGA板上的按鍵資源的

    ) { static u8 key_up=1;//按鍵按松開標(biāo)志 if( mode )key_up=1;//支持連按 if(key_up &amp;&amp;((gpio
    發(fā)表于 10-30 08:05

    極簡主義者的福音:GPIO關(guān)機(jī)功能,短按長按一代碼搞定!

    追求代碼簡潔高效?這個GPIO關(guān)機(jī)方案正適合你。僅需少量代碼,即可實現(xiàn)按鍵短按執(zhí)行重啟、長按觸發(fā)關(guān)機(jī),結(jié)構(gòu)清晰,易于移植和維護(hù)。 本文將以Air8000核心板為例,分享如何使用
    的頭像 發(fā)表于 10-26 16:58 ?1111次閱讀
    極簡主義者的福音:<b class='flag-5'>GPIO</b>關(guān)機(jī)功能,短按長按一代碼搞定!

    在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標(biāo)準(zhǔn)映射求解器

    該項目是在友晶DE1-SOC開發(fā)板實現(xiàn)Chirikov標(biāo)準(zhǔn)映射的求解器,并將其應(yīng)用于圖像加密和解密的概念驗證。
    的頭像 發(fā)表于 07-07 15:22 ?2028次閱讀
    在友晶DE1-SOC開發(fā)<b class='flag-5'>板實現(xiàn)</b>Chirikov標(biāo)準(zhǔn)映射求解器

    解鎖Air780EPM:N種GPIO操控LED的實戰(zhàn)技巧!

    在物聯(lián)網(wǎng)項目中,靈活使用Air780EPM的GPIO控制LED至關(guān)重要。本文將展示實現(xiàn)方式,涵蓋硬件配置與軟件編程,滿足不同場景需求。 今天特別分享基于Air780EPM的GPIO控制LED
    的頭像 發(fā)表于 05-28 16:56 ?1092次閱讀
    解鎖Air780EPM:N種<b class='flag-5'>GPIO</b>操控LED的實戰(zhàn)技巧!

    迅為RK3568驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實驗

    迅為電子RK3568開發(fā)板驅(qū)動指南GPIO子系統(tǒng) GPIO操作函數(shù)實驗
    的頭像 發(fā)表于 05-28 15:24 ?1556次閱讀
    迅為RK3568驅(qū)動指南<b class='flag-5'>GPIO</b>子系統(tǒng) <b class='flag-5'>GPIO</b>操作函數(shù)實驗

    AS32X601驅(qū)動系列教程 GPIO_按鍵檢測詳解

    在嵌入式系統(tǒng)開發(fā)中,GPIO(通用輸入輸出端口)是實現(xiàn)硬件與軟件交互的關(guān)鍵組件。本節(jié)主要利用的時GPIO的輸入采集功能,本節(jié)的主要功能為,讀取板載按鍵,當(dāng)
    的頭像 發(fā)表于 05-23 16:44 ?992次閱讀
    AS32X601驅(qū)動系列教程 <b class='flag-5'>GPIO</b>_<b class='flag-5'>按鍵</b>檢測詳解

    第六章 GPIO輸入——按鍵檢測

    本篇文章講述了如何在W55MH32上實現(xiàn)按鍵輸入檢測,以及按鍵輸入檢測的注意事項、實現(xiàn)方式和代碼講解等。掌握了按鍵檢測方式之后,我們就可以用
    的頭像 發(fā)表于 05-22 16:41 ?1165次閱讀
    第六章 <b class='flag-5'>GPIO</b>輸入——<b class='flag-5'>按鍵</b>檢測

    迅為RK3568驅(qū)動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復(fù)用功能

    迅為RK3568驅(qū)動指南GPIO子系統(tǒng)實戰(zhàn):實現(xiàn)動態(tài)切換引腳復(fù)用功能
    的頭像 發(fā)表于 05-22 14:27 ?2401次閱讀
    迅為RK3568驅(qū)動指南<b class='flag-5'>GPIO</b>子系統(tǒng)實戰(zhàn):<b class='flag-5'>實現(xiàn)</b>動態(tài)切換引腳復(fù)用功能
    晋州市| 兴安盟| 肇东市| 射洪县| 崇礼县| 韩城市| 嫩江县| 宁明县| 行唐县| 湘西| 资溪县| 双流县| 兴隆县| 呈贡县| 阿瓦提县| 乌兰察布市| 通渭县| 叶城县| 汝阳县| 夏津县| 田阳县| 神池县| 江津市| 新蔡县| 罗江县| 高雄市| 沾化县| 华蓥市| 瑞昌市| 武汉市| 北流市| 五寨县| 尤溪县| 新巴尔虎右旗| 临清市| 德安县| 沅陵县| 高邮市| 涡阳县| 乌苏市| 朝阳市|