stm32 工業按鍵檢測 STM32按鍵的檢測

2021-10-13 03:20:51 字數 1617 閱讀 7755

stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i/o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。

以下是乙個比較典型的例子:

利用按鍵控制led:

key.**件

#ifndef__key_h

#define__key_h

#include"sys.h「

#definekey0 gpio_readinputdatabit(gpioe,gpio_pin_4)//讀取按鍵0

#definekey1 gpio_readinputdatabit(gpioe,gpio_pin_3)//讀取按鍵1

#definekey2 gpio_readinputdatabit(gpioe,gpio_pin_2)//讀取按鍵2

#definekey3 gpio_readinputdatabit(gpioa,gpio_pin_0)//讀取按鍵3(wk_up)

#definekey_up 4

#definekey_left 3

#definekey_down 2

#definekey_right 1

void key_init(void);//io初始化

u8 key_scan(u8); //按鍵掃瞄函式

#endif

key.c檔案

void key_init(void)//io初始化

gpio_inittypedef gpio_initstructure;

//初始化key0-->gpioa.13,key1-->gpioa.15 上拉輸入

rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_gpioe,enable);//使能時鐘

gpio_initstructure.gpio_pin = gpio_pin_2|gpio_pin_3|gpio_pin_4;//pe2~4

gpio_initstructure.gpio_mode = gpio_mode_ipu; //設定成上拉輸入

gpio_init(gpioe, &gpio_initstructure);//初始化gpioe2,3,4

gpio_initstructure.gpio_pin = gpio_pin_0;初始化 wk_up-->gpioa.0 下拉輸入

gpio_initstructure.gpio_mode = gpio_mode_ipd;//pa0設定成輸入,預設下拉

gpio_init(gpioa, &gpio_initstructure);//初始化gpioa.0

u8 key_scan(u8mode)

elseif(key0==1&&key1==1&&key2==1&&key3==0)key_up=1;

return0;// 無按鍵按下

main.c檔案

int main(void)

u8 t;

delay_init(); //延時函式初始化

led_init(); //led埠初始化

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

beep_init(); //初始化蜂鳴器埠

led0=0; //先點亮紅燈

while(1) else delay_ms(10);

STM32按鍵的檢測

stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。以下是乙個比較典型的例子 利用按鍵控制led key.h檔案 ifndef key h define key h include sys.h definekey0 gpio r...

STM32 十九 電容按鍵檢測

如上圖為乙個電容按鍵結構圖,由絕緣材料 金屬感應片以及fr 4板材構成,金屬感應片和接地的金屬片形成乙個等效電容cx,當手指觸控時金屬感應片和手指會形成乙個cs等效電容。工作原理 在電路板未上電時,可以認為電容cx是沒有電荷的,在上電時,在電阻作用下,電容cx就會有乙個充電過程,直到電容充滿,即vc...

STM32按鍵實驗

用systick做時間20ms的判斷,用狀態機概念的按鍵掃瞄三狀態去除抖動,狀態0 有按鍵按下,狀態1 有按鍵按下,判斷具體按鍵,狀態3 判斷按鍵抬起,沒20ms進行狀態的判斷。流程圖 systick程式 不包括初始化程式,初始化程式在delay.c中 systick load 20 fac ms ...