2016-11-19 4 views
0
void EXTI3_IRQHandler(void){ 


    //Clear the EXTI pending bits 
    NVIC_ClearPendingIRQ(EXTI3_IRQn); 
    EXTI->PR|=(1<<3); 

    count++;  


} 

Dies ist meine Interrupt-Routine. Wenn die Taste gedrückt wird, tritt der Intterrupt auf und die Zählung wird erhöht. Ich weiß nicht, wie ich Bounce-Button Problem lösen. Bitte hilf mir!Entprellen auf stm32f4 Entdeckung

Antwort

0

Normalerweise dauert das Lesen der Eingabe nach einer kleinen Verzögerung.

Deaktivieren Sie in Ihrem Interrupt-Handler das ausstehende Bit und setzen Sie ein Flag auf "True".

Überprüfen Sie in Ihrer Hauptschleife, ob das Flag wahr ist. Wenn dies der Fall ist, fügen Sie eine Verzögerung hinzu (z. B. 20 ms), lesen Sie Ihre Eingabe und löschen Sie das Flag.

Wenn die Verzögerung in Ihrer Anwendung nicht akzeptabel ist, machen Sie dasselbe mit einem Timer.