Ich Schnittstelle eine Tastatur zu Stm32f429i Board und bin in der Lage, entsprechende Taste der Tastatur auf dem LCD-Bildschirm der Platine anzuzeigen. Kurzer Druck funktioniert gut, aber ich habe keine Ahnung, wie man ein langes Drucktasten-Ereignis implementiert. Kann mir bitte jemand helfen?Wie lang drücken Taste Ereignis für Stm32f429i Discovery Board mit Keil?
0
A
Antwort
0
Ja - Sie müssen den Timer-Interrupt verwenden. Hier ist der Link und die Bibliothek:
0
Edit: Wie suggested by PeterJ_01, ein Timer-Interrupt verwendet, ist die eleganteste Art und Weise. Verwenden Sie den GPIO-Interrupt nicht für Schaltflächen!
Wenn Sie die Hardware Abstraction Layer (HAL) Bibliothek verwenden, können Sie so etwas wie dies in Ihrem GPIO Interrupt tun:
static int timestamp_pressed = -1; // -1 means not pressed
if (timestamp_pressed == -1) {
// user just pressed the button
timestamp_pressed = HAL_GetTick(); // milliseconds since startup
} else if (HAL_GetTick() - timestamp_pressed > 2000) {
// 2000 milliseconds = 2 seconds are over
// << your code
timestamp_pressed = -1;
}
Wenn Sie nicht HAL verwenden und wollen keinen regelmäßigen Timer-Interrupt verwenden (von TIM1, TIM2, TIM3, ...) können Sie den SysTick-Timer verwenden (mit oder ohne Interrupt). Es gibt viele Informationen darüber im Internet;)
Verwandte Themen
- 1. Abbrechen Taste drücken Ereignis
- 2. WXPYTHON - Taste drücken Ereignis
- 3. Möglichkeit, Hardware-Taste drücken Ereignis
- 4. Lang drücken = Capitalize
- 5. wie zeichnen taste story board?
- 6. Drücken einer Taste mit Enter-Taste
- 7. Feuer-Ereignis auf Enter-Taste drücken Sie für ein Textfeld
- 8. Wie lang drücken Geste auf Alarmknopf?
- 9. Android lang drücken Sie die Such-Taste funktioniert nicht
- 10. lang drücken Gestenausgabe
- 11. Android lange Taste drücken
- 12. lange Volumen-Taste drücken
- 13. In angular2 wie Shift-Taste zu drücken drücken Sie auf Array-Taste drücken Sie?
- 14. Override-Taste mit Winkel drücken
- 15. Lang drücken, um Bilder anzuzeigen
- 16. Wie 'Abbrechen' einer Taste drücken?
- 17. Cordova android Volumen/up-Taste Ereignis bei Freigabe drücken nicht
- 18. Wie wird die Tastatur an STM32F429I DISC0 angeschlossen?
- 19. Simulieren Taste drücken mit Bash
- 20. globale Taste drücken Listener
- 21. Drücken Sie zwei fortlaufende Taste, um ein Ereignis in JavaScript
- 22. UILocalNotification erkennen Taste geschlossen drücken?
- 23. Web-Component-Tester MockInteractions sendet keine Taste drücken Ereignis
- 24. Drücken einer nächsten Taste für eine UITableViewcell
- 25. Jquery Taste drücken Auslöser
- 26. Trigger-Tab drücken Taste Ereignis auf Seite laden
- 27. Benachrichtigung bei Lautstärke-Taste drücken Ereignis in IOS
- 28. Css Taste Effekt drücken
- 29. Android: Tastatur auf Taste drücken drücken
- 30. Capture Key drücken Ereignis mit Xlib
mit EXTI-Interrupts für die Tasten ist der große Fehler und sollte vermieden werden. –
Warum ist das so? Wegen Kontaktprellen? (Wenn ja, könnte das nicht in ähnlicher Weise gelöst werden, wie ich es vorgeschlagen habe - oder ist das ein schlechter Stil?) – MemAllox
, weil Sie die Programmausführung im Interrupt für die Zeit des Entprellens blockieren müssen. Timer-Interrupts sollten dafür verwendet werden. –