用c++处理GPIO Button事件

Handle GPIO Button event with C++

本文关键字:Button 事件 GPIO 处理 c++      更新时间:2023-10-16

大家好,我需要一些帮助。我正在做一个c++嵌入式应用程序在ARM。我需要得到一个按钮事件,我在互联网上寻找,我发现最好的方法是中断。我知道我可以像这样通过终端设置一个引脚"echo raise>/sys/…/gpio/gpio81/edge"。但是我需要知道如何从我的c++应用程序中获得中断,当它发生时,我只需要一些例子,因为我不知道我是否必须使用一些特殊的库。

谢谢你们,我希望有人能帮助我。

手动'机械'按钮需要打开。这一点,以及按下按钮不需要高I/O性能的事实,意味着GPIO中断是一种尴尬的过度杀伤。当然,这是可以做到的,但是用定时器中断轮询GPIO端口更容易和更安全,存储输入的状态并与以前的状态/s进行比较。如果GPIO线在足够数量的样本中改变了状态,您就有了按钮事件并可以对其进行操作。

如果你使用的是一个任务操作系统,你可以挂钩现有的定时器中断-它只有几个指令来处理GPIO轮询,所以你不应该看到任何明显的性能影响。如果确定按钮已经按下/释放,您可以发出一个信号量,以便等待的线程可以快速处理该事件。

大家好,我找到了我想要的解决方案:

https://developer.ridgerun.com/wiki/index.php/Gpio-int-test.c

Thank you anyway