STM32學習 GPIO和按鍵 流水燈學習

2021-09-01 11:19:20 字數 1753 閱讀 3920

//main的完整過程:

int main(void)

}}

//關於key的操作;

//實現操作:(初始時燈亮)按一下按鍵後燈滅,再按一下燈亮;

先按之前的**點亮乙個led燈;

gpio_inittypedef gpio_d;

rcc_apb2periphclockcmd(rcc_apb2periph_gpiod,enable);

gpio_d.gpio_pin=gpio_pin_2;

gpio_d.gpio_mode=gpio_mode_out_pp;

gpio_d.gpio_speed=3;

gpio_init(gpiod,&gpio_d);

//然後定義按鍵;

void key_gpio_config(void)

//定義按鍵和定義led燈的過程差不多,主要區別在於mode的配置上;

/*4種輸入模式 :

gpio_mode_ipd(下拉輸入模式):在預設情況下(gpio引腳無輸入的情況下),讀取得gpio的引腳資料為1;

gpio_mode_ipu(上拉輸入模式):在預設情況下(gpio引腳無輸入的情況下),讀取得gpio的引腳資料為0;

gpio_mode_in_floating(浮空輸入模式):在晶元內部既沒有上拉也沒有下拉,經由觸發器輸入。由於其阻抗較大,所以一般把這種模式用於標準的通訊協議如i2c,usart的接收端。

gpio_mode_ain(模擬輸入模式):關閉施密特觸發器,不接入上、下拉電阻,經由另一線路把電壓訊號傳送到片上外設模組。如傳送到adc模組,由adc模組採集電壓訊號。所以使用adc外設的時候,必須設定為模擬輸入模式。

4種輸出模式:

gpio_mode_out_pp(普通推挽輸出):一般用於輸出電平為0和3.3v的場合。

gpio_mode_out_od(普通開漏輸出):一般應用在電平不匹配的場合,如需要輸出5v的高電平,就需要在外部接乙個上拉電阻,電源為5v,把gpio設定為開漏模式,當輸出高阻態時,由上拉電阻和電源向外輸出5v的電平。

gpio_mode_af_pp(復用推挽輸出):

gpio_mode_af_od(復用開漏輸出):

*///根據原理圖:當key沒有按下時為高電平,按下時為低電平,根據上述模式的介紹,可以選擇上拉輸入模式(gpio_mode_ipu)

//定義乙個掃瞄key輸入的函式:

u8 key_scanf(gpio_typedef* a,u16 pin)

else

} else

return 1;

}//逐句分析:

if(gpio_readinputdatabit(a,pin)==0):

//新的庫函式:gpio_readinputdatabit(a,pin),讀取輸入的資料,可用輸入電平高低判斷。

//根據呼叫函式:key_scanf(gpioc,gpio_pin_5) 可知,判斷的是key是否有輸入;

//當沒有按下key時,應輸入模式確定為上拉輸入模式,所以預設為高電平。然後,若有按下key,則輸入變為低電平。

//第二個

if(gpio_readinputdatabit(a,pin)==0) //是確認確實有按鍵按下,而不是按下一半返回。

while(gpio_readinputdatabit(a,pin)==0);//不停的檢測按鍵的電平,直至按鍵被釋放,被釋放後,按鍵的電平又恢復到預設的高電平。

//實際上這一整個過程都是按鍵掃瞄、消抖。

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學習筆記 GPIO

2011 03 06 15 10 stm32基本上每個引腳都有8種配置模式 浮空輸入 帶弱上拉輸入 帶弱下拉輸入 模擬輸入 推挽輸出 開漏輸出 復用推挽輸出 復用開漏輸出 通常有5種方式使用某個引腳功能,它們的配置方式如下 1 作為普通gpio輸入 根據需要配置該引腳為浮空輸入 帶弱上拉輸入或帶弱下...

STM32學習筆記 GPIO

該微控制器在gpio功能方面有以下特點 1 4種輸入模式 gpio mode ain 模擬輸入 gpio mode in floating 浮空輸入 gpio mode ipd 下拉輸入 gpio mode ipu 上拉輸入 2 4種輸出模式 gpio mode out od 開漏輸出 gpio m...