微控制器STM32入門 (2)按鍵控制

2021-10-18 21:12:03 字數 1673 閱讀 4429

2.程式編寫

2.2主程式

理論情況按鍵的電壓波形應該為方波

但是實際按鍵電壓波形,會有電壓抖動,我們需要通過延時來進行按鍵消抖,這裡需要用到延時函式delay_ms()

通過分析,我們可以知道。

首先我們需要gpio資料讀取函式,從pd8和pd9讀取資料,並記為key0 和 key1,

然後需要宣告void key_init(); int key_scan();這兩個函式

#ifndef _key_h

#define _key_h

#include

"sys.h"

//從pd8和pd9讀取資料

#define key0 gpio_readinputdatabit(gpiod, gpio_pin_9)

#define key1 gpio_readinputdatabit(gpiod, gpio_pin_8)

void

key_init()

;int

key_scan()

;#endif

按鍵掃瞄程式中,我們需要編寫void key_init()按鍵初始化函式,其功能為,初始化定義pd8 和 pd9介面。還需要編寫int key_scan()按鍵掃瞄函式,通過讀取按鍵電平的變化來判斷是否有按鍵按下與是哪乙個按鍵按下。

#include

"key.h"

#include

"stm32f10x.h"

#include

"delay.h"

void

key_init()

intkey_scan()

else

if(key1==0)

}else

if(key0==

1&&key1==

1) flag =1;

//沒有按鍵按下時,flag置1

return0;

//無按鍵按下

}

首先在主程式中定義無符號的字元變數key

在while迴圈中通過從按鍵掃瞄函式中讀取的數值來判斷應該控制哪乙個燈的狀態。

其中特別注意按鍵讀取函式key = key_scan();需要寫在while迴圈中,因為每一次的迴圈所掃瞄到的按鍵數值不一樣。

tips我就在第二次編寫時,出現了這樣的錯誤,困擾了很久。

#include

"stm32f10x.h"

#include

"delay.h"

#include

"key.h"

#include

"led.h"

intmain()}}}

本次我們學習了如何用按鍵來控制led燈的狀態,那麼下一次的學習,我們將來了解怎樣使用矩陣鍵盤,下一次的難度將會比前兩次的學習更大。加油!衝!!

微控制器 按鍵控制實驗

關於按鍵控制實驗我的微控制器是正點原子精英板,有三個按鈕 key0,key1,wk up分別控制 led0,led1,led0和led1 main.c include led.h include delay.h include key.h include sys.h include beep.h i...

微控制器 模擬舵機按鍵控制

功能 按鍵控制模擬舵機角度 目錄結構 程式 main.c include include include delay.h define uchar unsigned char define uint unsigned intsbit key1 p1 7 調速按鍵埠 sbit dc p3 5 pwm輸...

獨立按鍵控制 51微控制器實驗

用兩個按鍵控制顯示。乙個按鈕按下使第二個數碼管上數字從0到9迴圈顯示,另乙個按鈕按下使第三個數碼管上數字從9到0迴圈顯示。include 51微控制器標頭檔案 include define uchar unsigned char 巨集定義 define uint unsigned int uchar...