<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 【Alientek STM32 實(shí)驗2】--按鍵輸入

【Alientek STM32 實(shí)驗2】--按鍵輸入

作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò ) 收藏

在禁用了JTAG之后,我們再配置PA0、PA13、PA15為輸入,其設置與3.1的輸出配置差不多,這里不再介紹。

KEY_Scan函數,則是用來(lái)掃描這3個(gè)IO口是否有按鍵按下。這個(gè)KEY_Scan函數,掃描某個(gè)按鍵,該按鍵按下之后必須要松開(kāi),才能第二次觸發(fā),否則不會(huì )再響應這個(gè)按鍵,這樣的好處就是可以防止按一次多次觸發(fā),而壞處就是在需要長(cháng)按的時(shí)候比較不合適。同時(shí)還有一點(diǎn)要注意的就是,該函數的按鍵掃描是有優(yōu)先級的,最優(yōu)先的是KEY0,第二優(yōu)先的是KEY1,最后是KEY2。該函數有返回值,如果有按鍵按下,則返回非0值,如果沒(méi)有或者按鍵不正確,則返回0。具體怎么實(shí)現請參考KEY_Scan的代碼。

保存key.c代碼,然后我們按同樣的方法,新建一個(gè)key.h文件,也保存在KEY文件夾下面。在key.h中輸入如下代碼:

#ifndef __KEY_H

#define __KEY_H

#include "sys.h"

//Mini STM32開(kāi)發(fā)板

//按鍵輸入驅動(dòng)代碼

//正點(diǎn)原子@ALIENTEK

//2010/5/27

#define KEY0 PAin(13)//PA13

#define KEY1 PAin(15)//PA15

#define KEY2 PAin(0)//PA0WK_UP

void KEY_Init(void);//IO初始化

u8 KEY_Scan(void);//按鍵掃描函數

#endif

這段代碼里面最關(guān)鍵就是3個(gè)宏定義:

#define KEY0 PAin(13)//PA13

#define KEY1 PAin(15)//PA15

#define KEY2 PAin(0)//PA0WK_UP

這里使用的是位帶操作來(lái)實(shí)現讀取某個(gè)IO口的1個(gè)位的。同輸出一樣,我們也有另外一種方法可以實(shí)現上面代碼的功能,如下:

#defineKEY0 (1<<13)//KEY0PA13

#defineKEY1 (1<<15)//KEY1PA15

#defineKEY2 (1<<0)//KEY2PA0

#define KEY0_GET() ((GPIOA->IDR&(KEY0))?1:0)//讀取按鍵0

#define KEY1_GET() ((GPIOA->IDR&(KEY1))?1:0)//讀取按鍵1

#define KEY2_GET() ((GPIOA->IDR&(KEY2))?1:0)//讀取按鍵2

通輸出一樣,我們使用第一種方法,比較簡(jiǎn)單,看起來(lái)也清晰明了,最重要的是修改起來(lái)比較方便,后續實(shí)例,我們一般都使用第一種方法來(lái)實(shí)現輸入口的讀取。而第二種方法則適合在不同編譯器之間移植,因為他不依靠其他代碼。具體選擇哪種,大家可以根據自己的喜好來(lái)決定。

將key.h也保存一下。接著(zhù),我們把key.c加入到HARDWARE這個(gè)組里面,這一次我們通過(guò)雙擊的方式來(lái)增加新的.c文件,雙擊HARDWARE,找到key.c,加入到HARDWARE里面,如下圖所示:,編譯工程,得到結果如下圖所示:

圖3.2.3.4編譯結果

可以看到?jīng)]有錯誤,也沒(méi)有警告。從編譯信息可以看出,我們的代碼占用FLASH大小為:1792字節(1524+268),所用的SRAM大小為:520個(gè)字節。

這里我們解釋一下,編譯結果里面的幾個(gè)數據的意義:

Code:表示程序所占用FLASH的大?。‵LASH)。

RO-data:表示程序定義的常量(FLASH)。

RW-data:表示已初始化的全局變量(SRAM)

ZI-data:表示未初始化的全局變量(SRAM)

有了這個(gè)就可以知道你當前使用的flash和sram大小了,所以,一定要注意的是程序的大小不是.hex文件的大小。

接下來(lái),我們還是先進(jìn)行軟件仿真,驗證一下是否有錯誤的地方,然后才下載到Mini STM32看看實(shí)際運行的結果。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: AlientekSTM32按鍵輸

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>