按鍵實驗 GPIO的輸入模式

2021-10-05 02:40:24 字數 1706 閱讀 8440

@按鍵實驗(gpio的輸入模式)

#引言

在之前的實驗中,小羅同學使用的都只是gpio的輸出模式,這次的按鍵實驗雖然比較簡單,但也是我第一次接觸gpio的輸入,所以還是想寫點東西記錄一下。

#按鍵模組電路圖

我手中的開發板除去復位按鍵後還有其餘四個按鍵,電路結構圖如下:

以上四個按鍵所對應的管腳編號分別為:pa0、pe4、pe3、pe2。由圖可知,key_up為高電平有效,其他三個均為低電平有效。

#按鍵配置

void

key_init

(void

)

這裡要注意的是要根據電路圖的連線來判斷究竟是選擇gpio_pupd_up還是gpio_pupd_down(我就是因為這裡的配置錯誤而調了半天╮(╯▽╰)╭)

#掃瞄函式

初始化配置完成之後,接下來要進行的就是利用判斷語句來判斷究竟是哪個引腳接收到了有效電平,由於這裡我們需要乙個返回值,所以定義為u8型別,而形參mode則用於選擇是連續掃瞄還是單次掃瞄。

u8 key_scan

(u8 mode)

//自定義掃瞄函式即模式。mode為1時,連續掃瞄;為0時為單次掃瞄

else

if(key_left==0)

else

if(key_down==0)

else

if(key_right==0)

}else

if(key_up==

0&&key_left==

1&&key_down==

1&&key_right==1)

if(mode==1)

return0;

}

在上面的**中,運用到了標頭檔案中的兩部分巨集定義,分別為:

#define key_up pain(0) 

//pain(0)等函式的封裝詳見我的另一篇博文(

#define key_left pein(2)

#define key_down pein(3)

#define key_right pein(4)

#define key_up 1  

//在這裡,1 2 3 4並沒有重要的實際含義,只是進行區別的返回值,不為0即可

#define key_left 4

#define key_down 3

#define key_right 2

#實驗主程式

#include

"stm32f4xx.h"

#include

"led.h"

#include

"bit_operation.h"

#include

"systick.h"

#include

"beep.h"

#include

"key.h"

intmain()

}}

按鍵實驗 GPIO輸入

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

GPIO 輸入 按鍵檢測

這裡要用到一定的模電知識。電容兩端電壓不能突變,電感兩端電流不能突變。這裡利用了電容的放電延時實現硬體消抖。按鍵按下會有抖動,波形有毛刺,使得高低電平顯現不明顯,而按鍵按下時,電容放電一下,馬上又被充電,此時電容兩端的電壓不會突然變化,這個延時時間恰好可以達到消抖作用。這裡需要使用乙個韌體庫函式 b...

5 STM32按鍵輸入實驗 GPIO做輸入

stm32按鍵輸入實驗會把之前的led燈和蜂鳴器的控制加入進來,通過按鍵來進行控制,是乙個綜合性比較高的實驗。最後要實現的目的是 key up 控制蜂鳴器,按一次叫,再按一次停 key1 控制 ds1,按一次亮,再按一次滅 key0 則同時控制 ds0 和 ds1,按一次,他們的狀態就翻轉一次。除此...