//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...