私はstm32f429iボードにキーパッドをインターフェイスし、ボードのLCD画面にキーパッドのそれぞれのボタンを表示することができます。ショートプレスはうまくいきますが、長押しのキーイベントを実装する方法はわかりません。誰か助けてくれますか?keilを使用してstm32f429iディスカバリーボードにキーを長押しする方法は?
0
A
答えて
0
0
編集:ここではリンクとライブラリがあるsuggested by PeterJ_01として、タイマ割り込みを使用すると、最もエレガントな方法です。ボタンにGPIO割り込みを使用しないでください!
あなたがHardware Abstraction Layer (HAL)ライブラリを使用している場合、あなたはGPIO割り込み内でこのような何かを行うことができます。
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;
}
あなたがHALを使用していないから(定期的なタイマ割り込みを使用しない場合TIM1、TIM2、TIM3、...)は、SysTickタイマーの使用を検討することができます(割り込みありまたはなしで)。 )インターネット上でそれについて多くの情報があります;
関連する問題
- 1. casperjs/phantomjsのキー操作を「長押し」する方法をシミュレートするには?
- 2. アクセシビリティサービスを使用して電源ボタンを長押しする方法
- 3. キーを押してチェックボックスをオンにする方法は?
- 4. アラートボタンを長押しする方法?
- 5. 方法を実行するにはキー押しを使用できますか?
- 6. ボタンを長押ししてタイマーを作る方法は?
- 7. JQueryを使用してキー押下トリガーを送信する方法
- 8. Enterキーを押してonBlur()イベントをトリガーする方法は?
- 9. 長いキーを押したDOMキーダウンイベント
- 10. セレンを使用して非修飾キー(スペースキー)を押して保持する方法は?
- 11. Autohotkeyキーを押している間にマウスボタンを押したままにする方法は?
- 12. キーパッドとSTM32F429I DISC0のインターフェース方法は?
- 13. ナイトメアを使って矢印キーを押す方法は?
- 14. キーレスターを使用して押されたキーを出力する
- 15. コマンドを使用して削除キーを押すAppleScriptを作成するには
- 16. Shiftキーを押しながらAppskey(メニューキー)を使用する方法
- 17. webdriverjsを使って[Ctrl + T]キーを押して新しいタブを開く方法をシミュレートするには?
- 18. JButtonを使用する方法「押して離した場合」
- 19. RSeleniumを使用してウェブページで2つのキーを同時に(つまり、制御する)押す方法は?
- 20. 動的キーを使用してオブジェクトにアクセスする方法は?
- 21. iOS:長押しでUIScrollViewパンニングを有効にする方法
- 22. QLPreviewControllerの長押しのジェスチャーを無効にする方法
- 23. キーを押したときにスプライトを移動する方法
- 24. キーボードのフックを正しく使用してキーをブロックし、Cキーでブロックを解除するためにキーの組み合わせを押す方法
- 25. は、私は次の方法で私の長押しジェスチャー認識をカスタマイズしたい長押しジェスチャー認識
- 26. jQueryを使用してTabキーを押した後でフォーカスを戻す方法は?
- 27. JSのキー押しをシミュレートする方法は?
- 28. keilシミュレータを使用しているときのSystemClock_config()タイムアウト
- 29. ウェブページでスクリプトを入力してEnterキーを押す方法
- 30. ボタンを長押しする
ボタンのEXTI割り込みを使用することは大きな間違いであり、避けるべきです。 –
なぜそうですか?連絡バウンスのために?もしそうなら、それは私が提案したのと同様の方法で解決することができませんでしたか?それとも悪いスタイルと思われますか? – MemAllox
デバウンスの時間中に割り込みでプログラムの実行をブロックする必要があるからです。タイマー割込みを使用する必要があります。 –