STM32獨立按鍵之長按 短按

2022-09-08 03:09:13 字數 2544 閱讀 3197

內容如題:

1. 獨立按鍵(軟體消抖)

晶元引腳初始化為上拉輸入

#define key_l_state					ll_gpio_isinputpinset(key_l_port, key_l_pin)					

#define key_r_state ll_gpio_isinputpinset(key_r_port, key_r_pin)

#define key_enter_state ll_gpio_isinputpinset(key_enter_port, key_enter_pin)

uint8_t key_scan

(void

)elseif(

(key_l_state==1)

&&(key_r_state==1)

&&(key_enter_state==1)

) up_flag=1;

//只有當所有按鍵都是預設狀態,再置位按鍵抬起標誌

return0;

}int

main

(void

)else

if(key==2)

}

2. 按鍵長按、短按:

首先初始化乙個tim作為長按時間的計數器

void

mx_tim4_init

(void);

/* peripheral clock enable */

ll_apb1_grp1_enableclock

(ll_apb1_grp1_periph_tim4)

;/* tim4 interrupt init */

nvic_setpriority

(tim4_irqn,

nvic_encodepriority

(nvic_getprioritygrouping()

,2,0

));nvic_enableirq

(tim4_irqn)

; tim_initstruct.prescaler =

3600

; tim_initstruct.countermode = ll_tim_countermode_up;

tim_initstruct.autoreload =

1000

; tim_initstruct.clockdivision = ll_tim_clockdivision_div1;

ll_tim_init

(tim4,

&tim_initstruct)

;ll_tim_disablearrpreload

(tim4)

;ll_tim_setclocksource

(tim4, ll_tim_clocksource_internal)

;ll_tim_settriggeroutput

(tim4, ll_tim_trgo_update)

;ll_tim_disablemastersl**emode

(tim4)

;}

定義乙個結構體,把按鍵引腳定義為上拉輸入

typedef

struct

key_state;

在tim4中斷中處理按鍵的長按、短按

void

tim4_irqhandler

(void

)else

//鬆開按鍵

else

if(press_times1>20)

//按鍵按下時長超過100ms

}else

press_times1=0;

//清空計數

}/*****************************key0長短按處理*****************************************/if(

ll_gpio_isinputpinset

(gpioe, key0_pin)==0

)//按鍵按下

else

//鬆開按鍵

else

if(press_times0>20)

//按鍵按下時長超過100ms

}else

press_times0=0;

//清空計數

}/****************************key1和key2同時長按**************************************/

}/* user code end tim4_irqn 0 */

/* user code begin tim4_irqn 1 */

/* user code end tim4_irqn 1 */

}

使用:

while(1

)else

if(keystate.l1_l_flag)

//else if()。。。。。

}

projectlink

stm32按鍵 長按 短按 函式 一

在stm32工程中,長按和短按的 書寫,呼叫的讀取按鍵狀態的底層函式。封裝成的按鍵函式 下面是函式的標頭檔案,和.c檔案的 使用定時器來掃瞄按鍵。define key on 1 define key off 0 define key null 0 define key short 1 define ...

stm32外部中斷按鈕短按長按1 0

key.c define pwmaddkey 0 gpio readinputdatabit gpiob,gpio pin 8 讀取按鍵pwmaddkey 0 b8 define pwmreducekey 0 gpio readinputdatabit gpiob,gpio pin 9 讀取按pwm...

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

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