日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Tiny4412裸机程序,按键检测(轮询方式)

發布時間:2025/6/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Tiny4412裸机程序,按键检测(轮询方式) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

由于前幾天出差,博客沒有更新,今天看了看Tiny4412的原理圖,把按鍵掃描程序寫了一下,用的是輪詢方式,后面會有中斷方式的實現,閑話少說,進入正題,程序由前一個實驗Tiny4412之C語言實現流水燈更改而來:

一、控制原理說明

先看一下原理圖:

按鍵原理圖

首先把按鍵對應的GPIO設置為輸入模式,修改GPX3CON寄存器(板子不同,可能對應的GPIO管腳不同),通過上圖可知當沒有按下按鍵時,對應的GPIO狀態為高電平,當有按鍵被按下時,對應的GPIO變為低,我們在程序一直檢測這幾個GPIO狀態即可;

二、程序說明

其中Start.s文件同上一個實驗完全相同;鏈接腳本key.lds的內容和led.lds完全相同,只把名字改了改;Makefile的內容也大部分一樣,也只是改了改里邊文件的名字,key.c的文件需要重新編寫,代碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 /* * 程序說明 * 一上電,4個LED全亮,當某個按鍵被按下,則對應的LED熄滅(可同時按下多個鍵) * 對應關系:KEY1-LED1,KEY2-LED2,KEY3-LED3,KEY4-LED4 */ //按鍵對應的GPIO #define GPX3CON (*(volatile unsigned int *)0x11000C60) #define GPX3DAT (*(volatile unsigned int *)0x11000C64) //LED對應的GPIO #define GPM4CON (*(volatile unsigned int *)0x110002E0) #define GPM4DAT (*(volatile unsigned int *)0x110002E4) void delay(volatile int time) { for(; time > 0; time-- ) ; } int main(void) { unsigned long tmp = 0; unsigned char keyValue = 0; /* * GPX3_2-GPX3_5 設置為輸入功能,用于檢測按鍵引腳的狀態 */ tmp = GPX3CON; tmp &= ~(0xffff << 8); GPX3CON = tmp; /* * GPM4_0-GPM4_3 設置為輸出功能,用于控制LED的亮滅 */ tmp = GPM4CON; tmp &= ~0xffff; tmp |= 0x1111; GPM4CON = tmp; while(1) { //讀按鍵引腳狀態 keyValue = GPX3DAT; keyValue = (keyValue & (0xf << 2)) >> 2; if(keyValue != 0xf) //說明有按鍵被按下,再詳細判斷是哪個按鍵被按下 { delay(1000); //防抖 keyValue = GPX3DAT; keyValue = (keyValue & (0xf << 2)) >> 2; GPM4DAT = ~keyValue; //設置LED亮、滅 } else { GPM4DAT = 0x00; } } return 0; }

其中注釋也比較詳細,控制原理上邊也說得很清楚了,這里就不多說了,有問題可以留言。

三、程序編譯及燒寫

1.編譯

通過FTP或者其他工具將Start.s、Makefile、key.lds 、key.c四個文件上傳到服務器上去,輸入make命令進行編譯將得到key.bin文件。

2.燒寫

將SD卡插入電腦,并讓VmWare里的Ubuntu識別出來,然后執行如下命令:

1 sudo ./sd_fusing.sh /dev/sdb ../3_key_scan/key.bin

如下圖所示:

將程序燒到SD卡

四、上電實驗

程序運行圖一

程序運行圖二

上圖所示,圖一是沒有按鍵被按下,四個LED全都被點亮,圖二是有兩個鍵被我同時按下

?

總結

以上是生活随笔為你收集整理的Tiny4412裸机程序,按键检测(轮询方式)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。