今天在做處理一個中斷按鍵的時候,總是避免不了抖動的影響!

像這個按鍵信號,如果我們用一般的掃描方式的話,用一個延時就可以解決了,但是我們用中斷的話,怎么辦?
這樣明顯會中斷5次,在51里面還好,在進入中斷的時候,可以把中斷屏蔽了,但是51屏蔽中斷之后,其他中斷就不能觸發了,在stm32,甚至任意一個平臺都一樣,有人說關掉這個中斷源,我大致試了一下,最后程序都卡死!跑飛了。。所以這種也方法不可以去!
既然是這樣,我們用一個中斷程序執行標志符怎么?
~~~
void EXTI0_IRQHandler(void)
{
static u8 button = 0;
if(RESET == EXTI_GetFlagStatus(EXTI_Line0))return;
if(!button){
button = 1;
delay(KEY_DELAY);
if(!(GPIOA->IDR & (1<<0)))goto end;
/******************/
/******************/
end: button = 0;
}
EXTI_ClearFlag(EXTI_Line0);
}
~~~
button2起到標志位的作用,他必須是靜態變量,delay適當的延時,這樣就可以解決這個問題了!
- 前言
- 【菜鳥入門】stm32的第一個程序--LED
- 【菜鳥入門】stm32 之 掃描按鍵
- 【菜鳥入門】stm32 之 中斷按鍵
- 【菜鳥入門】stm32 之 USART
- 【菜鳥入門】stm32 之 iic
- 【菜鳥入門】stm32 之 eeprom
- 【菜鳥入門】stm32 之 pwm
- 【菜鳥入門】stm32 之 ADC 模數轉換
- 【菜鳥入門】stm32 之 實時時鐘
- 【菜鳥入門】stm32 之 DMA
- 【菜鳥入門】stm32 之 DAC
- 【STM庫應用】stm32 之 USART
- 中斷源去抖辦法
- stm32 啟動代碼應用技巧
- 【STM庫應用】stm32 之 IIC應用
- 【STM庫應用】stm32 之 中斷按鍵初始化(注意事項)
- 關于結構體初始化
- 【STM庫應用】stm32 之 TIM (詳解一 通用定時器)
- 【STM庫應用】stm32 之 TIM (詳解二 脈沖寬度、周期測量)
- 【stm32庫應用】SD驅動移植(基于SDIO外設)
- SD卡fat文件系統移植
- stm32 DMA初始化選項研究
- stm32 靈活靜態存儲控制器(FSMC)(NORFLASH\PSRAM)
- 【stm32+uC/OS-II】ucosii移植簡單詳細步驟
- STM32 加入調試信息來調試代碼
- NRF24L01 無線通信模塊使用