硬件平臺: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學習之路-006 clock的設置
下一篇:s3c2440學習之路-004 區(qū)分nand/nor 啟動
推薦閱讀
史海拾趣
隨著國內(nèi)市場的飽和,Engelking Elektronik開始尋求海外市場的發(fā)展。公司制定了詳細的國際化戰(zhàn)略,包括參加國際電子展會、拓展海外銷售渠道以及建立海外生產(chǎn)基地等。通過不斷努力,Engelking Elektronik成功進入了歐洲、北美和亞洲等多個國家和地區(qū)的市場。同時,公司還積極適應不同地區(qū)的文化和市場需求,提供定制化的產(chǎn)品和服務。
隨著市場的不斷拓展和技術的不斷進步,GAIA蓋亞電源持續(xù)加大研發(fā)投入,致力于技術創(chuàng)新和產(chǎn)品升級。公司擁有一支由超過300名工程師組成的研發(fā)團隊,他們緊密關注行業(yè)動態(tài),積極應對新技術和市場趨勢。每年,GAIA蓋亞電源都會推出數(shù)百種新產(chǎn)品,以滿足不同客戶的需求。這些新產(chǎn)品不僅涵蓋了更廣泛的電壓范圍和輸出功率,還集成了最新的濾波、網(wǎng)絡調(diào)節(jié)等先進技術,進一步提升了產(chǎn)品的性能和可靠性。
AVX一直致力于綠色技術的研發(fā)與應用。在數(shù)十年的深入研發(fā)支持下,AVX的產(chǎn)品為各種綠色技術提供了關鍵的支持,如風能、太陽能和水力發(fā)電等領域。這些技術的應用旨在節(jié)省現(xiàn)有能源并創(chuàng)建可靠、價格合理的電子系統(tǒng),為可持續(xù)發(fā)展做出了積極貢獻。AVX在這一領域的持續(xù)投入和創(chuàng)新,使其在綠色技術領域取得了顯著成果。
在集成電路商業(yè)化發(fā)展的黃金時期,ASM公司憑借其在硅材料領域的深厚積累,不斷推出創(chuàng)新產(chǎn)品,滿足市場日益增長的需求。公司通過雜志、展會等營銷工具,積極推廣其產(chǎn)品和服務,逐漸在行業(yè)內(nèi)樹立了良好的口碑。同時,ASM公司還不斷拓展其業(yè)務領域,從最初的半導體材料供應逐漸擴展到更廣泛的電子材料和設備領域。
為了拓展更廣闊的市場,Diode Laser Concepts公司開始實施國際化戰(zhàn)略。公司先是在亞洲和歐洲設立了辦事處,隨后又在美國等地建立了生產(chǎn)基地。通過與國際知名企業(yè)的合作,公司不僅將產(chǎn)品銷售到了全球各地,還積累了豐富的國際經(jīng)驗,提升了品牌影響力。
近年來,電子行業(yè)面臨著成本上升、全球不穩(wěn)定以及經(jīng)濟動蕩等多重挑戰(zhàn)。FCT electronic公司憑借其在撓性電路板領域的深厚積累,積極應對這些挑戰(zhàn)。公司加強了對供應鏈的管理,提高了生產(chǎn)效率,降低了成本。同時,F(xiàn)CT electronic公司還加大了對研發(fā)的投入,推動產(chǎn)品向高端化、智能化方向轉型升級。這些努力使FCT electronic公司在行業(yè)中保持了領先地位。
這里有兩個關于8路溫度測試,參數(shù)修改(上限溫度,下限溫度)寫入存儲器,分享給大家看看,希望大家挑錯或優(yōu)化改進方法,及新的想法。謝謝大家… 查看全部問答∨ |
手機工廠用PCB在進入貼片機之前需有個固定在貼片夾具上的過程,目前本部是使用人工操作,取主板放置在夾具上然后腳踏壓板裝置開關將主板固定在夾具上,送入貼片機; 想征求能夠實現(xiàn)自動取板然后自動按壓的裝置或方案; 機械手+自動傳送帶是可行方法之 ...… 查看全部問答∨ |
1.人民幣的印刷防偽技術 ; 2.傳感器的基本性能參數(shù)3.硬件設計;主要包括: a.顯示模塊; b.檢測模塊; c.報警模塊; d.鍵處理模塊 求好心的,,熱心的幫幫忙… 查看全部問答∨ |
臺積電與德國Dialog半導體公司雙方合作的BCD(Bipolar–CMOS -DMOS)制程技術——0.25微米高壓制程技術,能將各種高電壓功能有效整合在單一電源管理芯片中,從而提高成本效益,同時提高電源管理整合度,以滿足智能手機、電子書、筆記本電腦等未來移 ...… 查看全部問答∨ |
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; ・安裝小企鵝 ...… 查看全部問答∨ |
BJT ,mos,IGBT都有三種工作狀態(tài)。飽和,放大,截止。 大家來說說,這三種工作狀態(tài)在應該怎么在設計中運用啊。 [ 本帖最后由 安_然 于 2010-7-30 23:19 編輯 ]… 查看全部問答∨ |
設計資源 培訓 開發(fā)板 精華推薦
- 英飛凌穩(wěn)居微控制器領域榜首,鞏固其在全球車用半導體市場的領導地位
- 迅為imx6ull開發(fā)板使用c語言調(diào)用shell命令控制led燈
- 迅為IMX8MM開發(fā)板Android編譯環(huán)境搭建
- 迅為IMX6ULL開發(fā)板NFS服務器的使用
- 迅為ITOP4412開發(fā)板Qt界面添加圖片
- 迅為IMX6開發(fā)板OTA遠程升級-SWUpdata概述和使用
- 迅為IMX6ULL開發(fā)板NFS服務器的搭建
- 迅為IMX6開發(fā)板Buildroot文件系統(tǒng)4G撥號上網(wǎng)工具測試
- 實驗分享丨迅為IMX6ULL開發(fā)板點亮第一個led燈
- 三星下一代Galaxy Buds耳機將支持主動降噪
- 2017年韓國MicroLED專利申請近乎翻番
- iQOO Neo3參數(shù):右打孔屏 還有Wi-Fi 6
- 工信部:5G技術等領域將成為電子信息行業(yè)發(fā)展重點
- 無線充電突破 OPPO Ace2提前亮相:驍龍865+65W閃充
- 基于DSP芯片+GPS+GSM組成的汽車定位防盜功能系統(tǒng)
- 純電動汽車特斯拉多少錢一輛_特斯拉純電動model3中國售價
- 艾拉比總裁芮亞楠:未來軟件定義汽車,OTA體系建設是車廠
- ROHM取得汽車行業(yè)功能安全標準“ISO26262”的開發(fā)工藝認證
- 特斯拉遭下調(diào)評級_特斯拉評級下調(diào)原因是什么