STM32按鍵輸入

2022-07-20 09:09:11 字數 1221 閱讀 3888

這一節通過按鍵輸入的實驗,完成對io口配置輸入的學習,同時學習如何通過軟體去抖動。這一節最終可以實現利用wk_up按鍵控制led亮滅的效果。

與上一節點亮led相類似,這一節也需要在hardware資料夾內新建檔案key.hkey.c。同時將相應的檔案加入到工程中。

檢視原理圖,獲取wk_up按鍵的相關資訊。對應io口pa0。高電平為有效電平,且沒有外接下拉電阻。需要利用軟體設定io口為下拉狀態。

gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin)該函式可以獲取到相應io口的電平狀態。

步驟:

#ifndef __key_h

#define __key_h

#include "sys.h"

#define wk_up gpio_readinputdatabit(gpioa,gpio_pin_0) //wk_up作為相應io口狀態讀取的簡寫

//#define wk_up pain(0) 上一行**與該行效果相同

void key_init(void); //相應io口配置初始化

u8 key_scan(void); //wk_up按鍵處理函式

#endif

#include "key.h"

#include "sys.h"

#include "delay.h"

void key_init(void)

u8 key_scan(void)

} if (wk_up == 0 && flag == 1)

return 0;

}//以下是按鍵檢測的另一種寫法

//mode為1時,按鍵支援連按;為0時不支援連按

u8 key_scan(u8 mode)else if(!wk_up)

return 0; //未檢測到按鍵按下,就會返回0

}

//此處省略標頭檔案,之後一般都會省略標頭檔案

int main(void)else

}}

至此,將程式燒寫進微控制器,就可以實現開篇提到的按鍵控制led亮滅的功能了。這是不是非常的「阿美zing」呢?

\(\color\)

stm32按鍵輸入

對於上乙個實驗流水燈來說,這一次的實驗是獲取輸入的乙個小demo。在課堂上,看老師除錯的時候,只要有輸入則輸入暫存器idr的值就會改變,所以想要獲得輸入只需要迴圈去獲取idr的值即可。在stm32的庫中有乙個讀取輸入資訊的函式 uint8 t gpio readinputdatabit gpio t...

Stm32學習之按鍵輸入

一 首先清楚硬體連線 不同stm32版本存在一定的區別,一下都是根據正點原子的stm32f1為例。二 按鍵輸入實驗的程式步驟 1.使能按鍵對應io口始終,呼叫函式 rcc apb2periphclockcmd 2.初始化io模式 上拉 下拉輸入。呼叫函式 gpio init 3.掃瞄io口電平 庫函...

STM32學習記錄 按鍵輸入

程式設計方式 庫函式 目標 按下key1後led燈狀態反轉 按下key2後蜂鳴器與led狀態反轉 按下key3後蜂鳴器狀態反轉 key1 key2低電平有效 key3高電平有效 可設定乙個靜態區域性變數static 變數值在第一次初始化一次,後面的值會存在靜態儲存區,值不會被釋放 來儲存按鍵狀態,以...