按鍵輸入實驗

2021-10-10 05:21:41 字數 2653 閱讀 3570

1.硬體接法

4個按鍵:wk_up 控制蜂鳴器,key0 同時控制ds0和ds1;key1 控制ds1;key2控制ds0,

wk_up 外部上拉,晶元內部需要設定為下拉輸入;key0-key2 外部下拉,晶元內部需要設定為上拉輸入。

2.標頭檔案編寫

本次實驗涉及到led 蜂鳴器 按鍵,其中led和蜂鳴器是輸出,按鍵是輸入。

led標頭檔案編寫:

2-1.1 先來個條件編譯,不要問為什麼要這樣寫,問就是不知道。標準格式:

#ifndef __***_h

#define __***_h

//其中 *** 表示的是需要初始化的名稱,比如 led.h 檔案就是初始化led,所以對應的*** 應為 led

然後設定i/o 的值,一般的格式為:i/o口的腳位和模式;比如這個實驗中的控制led燈i/o 的值的程式是:

#define led0 pbout(5)               

#define led1 peout(5)

2-2:初始化輸入/輸出i/o口:

2.2-1:呼叫對應的i/o口初始化檔案;

2-2-2:定義乙個型別,並使能對應的gpio,設定pin腳,模式,並初始化。

2-2-3:按鍵輸入處理:

//mode:0 不支援連續按鍵;1 支援連續按鍵

//0,沒有任何按鍵按下;1.key0按下;2.key1按下;3.key2按下;4.wk_up按下

//函式優先順序:key0>key1>key2>wk_up

u8 key_scan

(u8 mode)

//掃瞄i/o口是否有按鍵按下

else

if(key0 ==

1&&key1 ==

1&&key2 ==

1&&wk_up ==

0)key_up =1;

return0;

//無按鍵按下

}

2-2-4:按鍵初始化i/o:

#ifndef __key_h

#define __key_h

#include

"sys.h"

#define key0 gpio_readinputdatabit(gpioe,gpio_pin_4)

//讀取按鍵0

#define key1 gpio_readinputdatabit(gpioe,gpio_pin_3)

//讀取按鍵1

#define key2 gpio_readinputdatabit(gpioe,gpio_pin_2)

//讀取按鍵2

#define wk_up gpio_readinputdatabit(gpioa,gpio_pin_0)

//讀取按鍵3

#define key0_pres 1

//按鍵k0按下

#define key1_pres 2

//按鍵k1按下

#define key2_pres 3

//按鍵k2按下

#define wkup_pres 4

//按鍵wkup 按下

void

key_init

(void);

u8 key_scan

(u8)

;#endif

其中按鍵讀取可以寫成:

#define key0 pein(4)

#define key1 pein(3)

#define key2 pein(2)

#define wk_up pain(0)

3.主函式編寫3-1:呼叫延時函式,led函式,蜂鳴器函式,按鍵輸入函式:

#include

"sys.h"

#include

"delay.h"

#include

"led.h"

#include

"beep.h"

#include

"key.h"

3-2:i/o口初始化:

vu8 key =0;

delay_init()

;//延時函式初始化

led_init()

;//led埠初始化

key_init()

;//初始化與按鍵連線的硬體介面

beep_init()

;//初始化蜂鳴器

led0 =0;

//先點亮led0

3-3;按鍵控制:

while(1

)}else

delay_ms(10);}

以上 即為按鍵輸入控制的**。

實驗3 按鍵輸入實驗

一 原理圖 二 庫函式 1 讀取io的狀態 uint8 t gpio readinputdatabit gpio typedef gpiox,uint16 t gpio pin 引數 gpio pin gpio pin x x 0 15 返回值 讀取到的狀態 0表示按鍵按下 1表示按鍵沒有按下。三 ...

按鍵實驗 GPIO輸入

1 參考資料 stm32f1開發指南 庫函式版本 第8章 按鍵輸入實驗 stm32中文參考手冊v10 第8章通用和復用功能io gpio和afio 2 硬體連線 key up pa0 key0 pe4 key1 pe3 key2 pe2 3 gpio輸入操作說明 讀取io口輸入電平呼叫庫函式為 ui...

20170725 按鍵輸入實驗

1 概念 將乙個不確定的訊號,通過乙個電阻與電源vcc相連,固定在高電平 2 上拉是對器件注入電流 灌電流 3 當乙個接有上拉電阻的io埠設定為輸入狀態時,它的常態為高電平 1 概念 將乙個不確定的訊號,通過乙個電阻與地gnd相連,固定在低電平 2 下拉是從器件輸出電流 拉電流 3 當乙個接有下拉電...