娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

硬件平臺:jz2440

軟件平臺:Ubuntu16.04 arm-linux-gcc-3.4.5

源碼位置: https://github.com/lian494362816/C/tree/master/2440/006_key


1.原理分析

按鍵是常用的電子元器件,去讀按鍵的方法主要有2種

1)輪訓方式,就是需要不斷的去讀取按鍵的數(shù)值

2)中斷方式,通過外部中斷來實現(xiàn),只有當按鍵 按下/松開 時才會觸發(fā),不需要不斷的去讀取按鍵的值

中斷的方式配置比較復雜,本篇博客就先講通過輪訓的方式讀取按鍵的值。


硬件原理很簡單,從電源正極到地中間串聯(lián)1個電阻和1個按鍵開關,然后2440的某個pin腳在連接上去,通過去讀pin腳的電平來獲取按鍵的數(shù)值。

當按鍵未按下時,讀取到的就是高電平,2440獲取到的就是1

當按鍵按下時,讀取到的就是地電平,2440獲取到的就是0

在這里插入圖片描述

jz2440的原理圖可能看上去有不同,因為分成了2個部分,1個是電阻上拉部分,1個是按鍵接地部分,不過最后組合起來就是上面那張圖片的效果。這里有4按鍵,不過這次只用其中的3個。

EINT0–GPF0

EINT2–GPF2

EINT11–GPG3


jz2440按鍵原理圖

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

2.主要流程

2440的GPIO pin腳有不同的功能,不過一般GPIO pin腳有3種模式,輸入模式、輸出模式、特殊功能模式。


輸出模式和輸出模式好理解,特殊功能模式則是這個pin腳的特殊功能,每個pin腳都不一樣。


如當做外部中斷、當做LCD控制引腳等等。如要需要讀取按鍵的數(shù)值,當然就需要配置成輸入模式了。 這里只配置3個按鍵,因為開發(fā)板上剛好有3個led燈,可以通過led的亮滅來顯示按鍵的狀態(tài)


1)將GPF0,GPF2, GPG3 設置成輸入模式, 通過GPFCON和GPGCON來控制

2)讀取GPF0, GPF2,GPG3的數(shù)值。GPF0,GPF2的數(shù)值通過讀取GPFDAT的第0,第2位來確定。GPG3 的數(shù)值通過去讀GPGDAT的第3位來確定

3)通過死循環(huán),不斷的讀取GPFDAT和GPGDAT的數(shù)值來判斷按鍵狀態(tài)

4)若按鍵按下,則led亮,若按鍵未按下,則led滅

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

3. 源碼

key.c


/*

Input =b00

EINT0   GPF0 [1:0]

EINT2   GPF2 [5:4]

EINT11 GPG3 [7:6]

*/

int key_init(void)

{

    GPFCON &= ~(0x3 << 0);

    GPFCON &= ~(0x3 << 4);

    GPGCON &= ~(0x3 << 6);

      

    return 0;

}


按鍵的初始化代碼很簡單,將3個GPIO配置成輸出模式即可


key.c


int main(void)

{

    int i = 0;

    int key_gpf_value = 0;

    int key_gpg_value = 0;


    led_init();

    key_init();


    while(1)

    {

        key_gpf_value = GPFDAT;

        key_gpg_value = GPGDAT;


        /* 1 key release */

        if (key_gpf_value & (1 << 0))

        {

            led_off(6);

        }

        else /* 0 key press */

        {

            led_on(6);

        }


        if (key_gpf_value & (1 << 2))

        {

            led_off(5);

        }

        else

        {

            led_on(5);

        }


        if(key_gpg_value & (1 <<3))

        {

            led_off(4);

        }

        else

        {

            led_on(4);

        }

    }



    return 0;

}


主函數(shù)先初始化按鍵和led, 然后通過while(1)不斷的去讀取GPFDAT,GPGDAT來獲取按鍵的狀態(tài)。 led_on, led_off 傳入4,5,6 分別對應3個不同的led, 這里不做展開介紹。


這個程序只是簡單的介紹如何通過輪訓的方式來讀取按鍵的值,程序主要存在2個問題:

1)實際使用中,可不能使用while(1)不停的讀取按鍵的數(shù)值,這樣做很浪費CPU。(不過以前寫單片機程序就是這樣做的)

2)按鍵存在消斗的問題,實際的電平波形是會出現(xiàn)來回抖動的,如下圖的虛線就是判斷電平高地的標準線。因為電平抖動,一次按鍵 按下/松開 的過程中會出現(xiàn)多次 按下/松開 的結果。因為程序是靠led來顯示結果,如果是 按下/松開 通過串口打印結果的話,一次 按下/松開 串口可能會噴出多次不同的結果。 處理的方式就是延遲一會之后再次去讀取,如果數(shù)值還是一樣的話,那就是正確的結果了,否則就是抖動。

在這里插入圖片描述

關鍵字:s3c2440  按鍵 引用地址:s3c2440學習之路-005 輪訓模式讀取key(按鍵)

上一篇:s3c2440學習之路-006 clock的設置
下一篇:s3c2440學習之路-004 區(qū)分nand/nor 啟動

0

推薦閱讀

硬件設備:STM32VCT6GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //使能USART2時鐘 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50...
8月31日上午消息,蘋果公司近日在其官網(wǎng)公布了Apple Watch Series 2和Series 3鋁金屬表款屏幕更換計劃。根據(jù)蘋果的說法,此兩款智能表可能出現(xiàn)屏幕破裂,因此蘋果及其授權維修商可免費為符合條件且出現(xiàn)了裂紋的 Apple Watch更換屏幕。蘋果公告稱:Apple 已經(jīng)確定,在極少數(shù)情況下,鋁金屬表殼的 Apple Watch Series 2 或 Series 3 表款可能...
華為消費者業(yè)務CEO余承東近期談了華為目前的情況。他表示,自從實體清單以來,美國的芯片和技術不能用以后,已做近十年的準備,開發(fā)華為自己的芯片、軟件、供應等。第一輪的制裁,對華為沒有達到危機,只是對他負責的部分影響比較大,但海外市場谷歌生態(tài)沒法用,對于安卓用戶卻是災難性的。 構筑生態(tài),投入鴻蒙 余承東表示,已開始構筑自己的生態(tài),并不斷...
74HC595.c源文件#include "74HC595.h"void LED595Init(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOC , ENABLE); //Data Pin// GPIO_InitStructure.GPIO_Pin = LED595_DATA_PIN;// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;// ...

史海拾趣

問答坊 | AI 解惑

8路溫度測試,參數(shù)修改寫入存儲器

這里有兩個關于8路溫度測試,參數(shù)修改(上限溫度,下限溫度)寫入存儲器,分享給大家看看,希望大家挑錯或優(yōu)化改進方法,及新的想法。謝謝大家…

查看全部問答∨

PCB主板裝卸自動化

手機工廠用PCB在進入貼片機之前需有個固定在貼片夾具上的過程,目前本部是使用人工操作,取主板放置在夾具上然后腳踏壓板裝置開關將主板固定在夾具上,送入貼片機; 想征求能夠實現(xiàn)自動取板然后自動按壓的裝置或方案; 機械手+自動傳送帶是可行方法之 ...…

查看全部問答∨

急求 基于51單片機的驗鈔機的畢業(yè)論文

1.人民幣的印刷防偽技術 ; 2.傳感器的基本性能參數(shù)3.硬件設計;主要包括: a.顯示模塊; b.檢測模塊; c.報警模塊; d.鍵處理模塊 求好心的,,熱心的幫幫忙…

查看全部問答∨

期待體驗先進的電源管理技術——0.25微米高壓制程技術

臺積電與德國Dialog半導體公司雙方合作的BCD(Bipolar–CMOS -DMOS)制程技術——0.25微米高壓制程技術,能將各種高電壓功能有效整合在單一電源管理芯片中,從而提高成本效益,同時提高電源管理整合度,以滿足智能手機、電子書、筆記本電腦等未來移 ...…

查看全部問答∨

AT89S51 編程

求一個AT89S51 ISP燒寫器電路,可以在線編程的。…

查看全部問答∨

買開發(fā)板有沒有必要買S3C2440的?

S3C2410是不是落后S3C2440很多? 兩塊開發(fā)板價格差在400左右。 買S3C2440值不值呢?謝謝大家。…

查看全部問答∨

4個16X16點陣LED電子顯示屏的設計

A請問點陣屏電路設計有錯誤嗎? B如果我想寫個點陣屏測試程序,可以使4個16X16點陣由第一行亮到第16行?我該怎樣寫啊? 下面為6頁資料連接地址,請大家看完后給我一點見議啦! http://img016.photo.21cn.com/photos/forum/20080909/m/5BF77FCCF08DE9E9 ...…

查看全部問答∨

將工作環(huán)境從Redhat 9遷移到Fedora Core 5

本人一直是在RedHat 9 Linux下進行嵌入式軟件的開發(fā)工作,平時主要用c語言,用的是自帶的KDevelop,現(xiàn)轉移到Fedora Core 5下工作。 遷移中涉及的問題有: ・ 將Fedora Core 5的內(nèi)碼由zh_CN.UTF-8轉換為zh_CN.GB18030; ・安裝小企鵝 ...…

查看全部問答∨

DIY LED簡易電源

replyreload += \',\' + 678821;Timson,如果您要查看本帖隱藏內(nèi)容請回復…

查看全部問答∨

關于器件工作在哪一種狀態(tài)

BJT ,mos,IGBT都有三種工作狀態(tài)。飽和,放大,截止。 大家來說說,這三種工作狀態(tài)在應該怎么在設計中運用啊。     [ 本帖最后由 安_然 于 2010-7-30 23:19 編輯 ]…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 手机| 辉县市| 洪泽县| 平昌县| 东至县| 辉南县| 延庆县| 枣强县| 奇台县| 蕉岭县| 新河县| 江孜县| 祁东县| 东辽县| 米林县| 开封县| 温泉县| 垣曲县| 太谷县| 桑植县| 遂昌县| 谢通门县| 花垣县| 成安县| 鹤壁市| 井研县| 万全县| 宾阳县| 乐都县| 长春市| 尉犁县| 锡林浩特市| 金秀| 奉贤区| 台山市| 镇巴县| 双鸭山市| 新安县| 嘉兴市| 齐河县| 华蓥市|