由於實驗與按鍵有關,既然有按鍵,那就必須要解釋下按鍵消抖。
原理:讀取按鍵電平(按下為1,鬆開為0)
當讀到1的時候(按鍵好像被按下了)
那麼我們延時10ms再讀
若按鍵讀到為1(說明按鍵真的被按下了)——執行操作
若按鍵讀到為0(說明這只是一次機械抖動,咱們不用理他!)
基於按鍵消抖原理編的按鍵掃瞄函式:
int key_scan()
elseif(
key1==0
)elseif(
key2==0
)}elseif(
key0==1
&&key0==1
&&key2==1
) flag =1;
return
0;
為了實現使用按鍵來驅動led,我們需要對按鍵和埠進行一些定義,如下:
ifndef _key_h
#define _key_h
#include "sys.h"
#define key0
gpio_readinputdatabit
(gpioe
, gpio_pin_9)
//定義pe9為key0
#define key1
gpio_readinputdatabit
(gpioe
, gpio_pin_8)
//定義pe8為key1
#define key2
gpio_readinputdatabit
(gpioe
, gpio_pin_7)
//定義pe7為key2
#endif
然後我們就可以通過按鍵來驅動埠啦,不過還需要進行乙個步驟,那就是對我們所需要的埠進行初始化(gpio配置)。
本實驗所需要的三個埠分別為pe7,pe8和pe9。所以我們開始配置;
//初始化pe7,8,9
void
key_init()
//主函式
#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key.h"
int main
(void)}
}}
#include "key.h"
#include "stm32f10x.h"
#include "delay.h"
//初始化pe7,8,9
void
key_init()
//按鍵掃瞄函式
int key_scan()
elseif(
key1==0
)elseif(
key2==0
)}elseif(
key0==1
&&key0==1
&&key2==1
) flag =1;
return0;
}
#ifndef _key_h
#define _key_h
#include "sys.h"
#define key0
gpio_readinputdatabit
(gpioe
, gpio_pin_9)
//定義pe9為key0
#define key1
gpio_readinputdatabit
(gpioe
, gpio_pin_8)
//定義pe8為key1
#define key2
gpio_readinputdatabit
(gpioe
, gpio_pin_7)
//定義pe7為key2
void
key_init()
;int key_scan()
;#endif
本實驗我們要用到矩陣鍵盤和我們的主機板,我們用到的矩陣鍵盤有四行:r1~4,
和四列:c1~4。
由於我們這個實驗要求用到三個按鍵,所以我選擇了同一行的三個按鍵。
接線方式是先把想用的行接地,然後再把想用的列的三條線分別接到pe7,pe8和pe9上。
接線完畢,圖如下:
所有準備工作都做完啦!接下來我們該進行按鍵驅動啦!
按鍵驅動小實驗
stm32按鍵學習
wk up接vcc3.3,是高電平,當wk up 1的時候處於開啟狀態 key0和key1都接在gnd上面,是處在低電平,當key0 和 key1 0時處於開啟狀態。wk up接pa0 key0接pc5 key1接pa15。mode 0,不支援連續按 1,支援連續按 key up 0是按下去 key...
Stm32學習之按鍵輸入
一 首先清楚硬體連線 不同stm32版本存在一定的區別,一下都是根據正點原子的stm32f1為例。二 按鍵輸入實驗的程式步驟 1.使能按鍵對應io口始終,呼叫函式 rcc apb2periphclockcmd 2.初始化io模式 上拉 下拉輸入。呼叫函式 gpio init 3.掃瞄io口電平 庫函...
stm32之按鍵實驗
前言 這個實驗比較簡單,就是對io口的配置。up鍵用來開啟led燈,down鍵用於關閉led燈,left鍵用於開啟蜂鳴器,right用於關閉蜂鳴器。1.初始化用到的io口 void key init 注意 這裡按鍵的io口為輸入功能,所以模式為輸入模式。另外上啦和下拉根據電路圖而定。還有,因為為輸入...