stm32中非阻塞式多按鍵狀態檢測函式 2

2021-08-31 11:46:55 字數 827 閱讀 5943

關於gpio的輸出功能之前我們已經有了一定的了解 

這次通過按鍵輸入對gpio輸入功能做實際應用

主要內容:

按鍵輸入的硬體連線

讀取io輸入的相關函式

捕捉按鍵狀態的步驟

按鍵掃瞄實現思路

按鍵掃瞄程式**

一,硬體連線

如圖,有4個按鍵,分兩組

第一組:wk_up連線vcc

第二組:key0,key1,key2連線gnd12

確定io口工作模式:

當io口按下時我們需要捕捉到io口的電平變化

所以wk_up按下後為高地平,需設定按下前為低電平,應設定為下拉輸入

同理key0,key1,key2按下後為低電平,應設定為上拉輸入

二,讀取io輸入的相關函式:

1,庫函式

uint8_t gpio_readinputdatabit(gpio_typedef* gpiox, uint16_t gpio_pin);

2,暫存器

gpio埠輸入暫存器:gpiox_idr

3,位操作

pein(n)  讀取gpioe.n的輸入電平

三,步驟:

1,使能相應的gpio時鐘

rcc_apb2periphcolckcmd();

2,初始化io口工作模式

gpio_init();

參考gpio初始化

3,掃瞄io口電平

四,按鍵掃瞄思路:

1,讀取按鍵對應io口的輸入電平

2,比較輸入電平確定按鍵是否被按下

注意:按鍵被按下和抬起的一瞬間會有按鍵抖動需延時一段時間避免判斷錯誤

STM32按鍵狀態機的實現

目錄 一 按鍵狀態機的作用 二 按鍵狀態機的實現 1 按鍵狀態機的巨集定義 2 按鍵狀態機的列舉與相關結構體 3 按鍵狀態機的函式實現 一般的按鍵狀態機一般都具有以下功能 實現思想 使用方法 按鍵key的編號 define key default num 0x00 define key 0 num ...

STM32之系統時基定時器中如何完成按鍵防抖動問題

在按鍵演示防抖動部分的主要思路是 利用系統定時器溢位間隔中斷來延時防抖。這樣做可以提高 的執行效率。我們怎麼去很好的利用這個系統定時器來延時呢?如果只是簡單在系統定時器中斷中置位延時標誌位,沒有任何意義,我們需要有乙個標誌位來允許置延時標誌。第一次掃瞄到有按鍵按下時,延時標誌肯定為空,那麼在此置位乙...

嵌入式C語言STM32在FLASH中讀取寫入資料

向flash中寫入資料的主體思想就是先解鎖,然後清標誌位,然後找到要寫入的位址,然後改變標誌準備寫入,然後在按已有的函式按位址一位元組一位元組的寫入,最後要將flash上鎖 1.寫入函式 如下 int32 t flash writedata uint32 t address,uint8 t data...