我将键盘连接到stm32f429i板,并且能够在板的LCD屏幕上显示键盘的相应按钮。短按工作正常,但我不知道如何实施长按键事件。有人可以帮助我吗?
答案 0 :(得分:0)
是 - 您需要使用定时器中断。这是链接和库:
答案 1 :(得分: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定时器(带中断或不带中断)。互联网上有很多关于它的信息;)