STM32按鍵實驗

2021-06-28 04:45:50 字數 577 閱讀 6978

用systick做時間20ms的判斷,用狀態機概念的按鍵掃瞄三狀態去除抖動,狀態0:有按鍵按下,狀態1:有按鍵按下,判斷具體按鍵,狀態3:判斷按鍵抬起,沒20ms進行狀態的判斷。

流程圖:

systick程式(不包括初始化程式,初始化程式在delay.c中)

systick->load=20*fac_ms;//寫入裝載值

systick->val =0x00;                     //清零計數值

systick->ctrl=0x01 ; //啟動systick

temp = systick->ctrl;

if(temp&0x01&&(temp&(1<<16)))//判斷systick異常

出現的問題:

1.發現gpio_readinputdata讀取的資料不對,用gpio_readinputdatabit

代替正常。**分析,i/o口和資料位對應錯誤。pc_2,pc_3,pc_5,分別對應idr暫存器的第3位,第四位,第六位。

2.修改程式的結構,新增在狀態2執行完判斷後進入狀態3.

反思:考慮要調理清晰,分析要透徹見底,小心思維慣性!

stm32之按鍵實驗

前言 這個實驗比較簡單,就是對io口的配置。up鍵用來開啟led燈,down鍵用於關閉led燈,left鍵用於開啟蜂鳴器,right用於關閉蜂鳴器。1.初始化用到的io口 void key init 注意 這裡按鍵的io口為輸入功能,所以模式為輸入模式。另外上啦和下拉根據電路圖而定。還有,因為為輸入...

stm32 工業按鍵檢測 STM32按鍵的檢測

stm32的按鍵檢測相對比較簡單,首先按部就班的初始化連線的到的i o,然後寫乙個按鍵掃瞄函式,這個和51微控制器的差不多。以下是乙個比較典型的例子 利用按鍵控制led key.件 ifndef key h define key h include sys.h definekey0 gpio rea...

stm32學習筆記(二)按鍵實驗

本程式只供學習使用,未經作者許可,不得用於其它任何用途 alientek mini stm32開發板 按鍵輸入 驅動 正點原子 alientek 技術論壇 www.openedv.com 修改日期 2014 3 06 版本 v1.0 按鍵初始化函式 pa15和pc5 設定成輸入 void key i...