gpt4 book ai didi

c - 如何用STM32正确实现按键组合?

转载 作者:行者123 更新时间:2023-11-30 14:40:07 24 4
gpt4 key购买 nike

我想将一些触觉按钮与 STM32 连接。然后,根据特定时间段内的按钮按下组合,我需要执行不同的功能。

我知道使用 HAL_Delays 会卡住程序,但我不想这样做。我认为计时器是可行的方法。在这种情况下,我应该使用什么作为时间段。我应该轮询计时器计数器吗?标准且无故障的方法是什么?

最佳答案

有多种可能性,但一个简单的方法是捕获按钮按下事件的时间,并将其与当前时间进行比较。

硬件密集型方法是将每个按钮连接到输入捕获计时器。然后将捕获按钮按下时间,并且保持的时间是当前计时器值减去捕获时间。然后,您的应用程序可以确定每个按下的按钮,已经持续了多长时间。

但是,该方法需要为每个按钮配备一个计时器捕获单元。一种较便宜的解决方案是将每个按钮连接到 GPIO EXTI 输入,并为每个按钮捕获按钮按下中断上的系统控制时间。

无论哪种情况,捕获时间的处理都是相同的。

伪代码:

int downTime( int button_id ) 
{
int down_time = 0 ;

// If the button is down, report how long it has been down
if( buttonDown( button_id ) )
{
down_time = buttonTimerNow( button_id ) - buttonTimerCapture( button_id ) ;
}

return down_time ;
}

bool pressed( int button_id )
{
// The button is pressed, if it has been down for
// longer than the switch bounce time.
return downTime( button_id ) > DEBOUNCE_TIME ;
}

bool combinationPressed()
{
// Test for the required combination of currently
// simultaneously pressed buttons.
return pressed( BUTTON_A ) && pressed( BUTTON_B ) ;
}

关于c - 如何用STM32正确实现按键组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55692049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com