大家好我需要一些帮助。我正在ARM中制作一个c ++嵌入式应用程序。我需要一个按钮事件,我在网上寻找,我发现最好的方法就是中断。我知道我可以通过终端设置一个引脚,如“echo raise> /sys/.../gpio/gpio81/edge”。但是我需要知道如何在C ++应用程序发生时从中获取中断,我只需要一些例子,因为我不知道是否必须使用一些特殊的库。
谢谢你们,我希望有人可以帮助我。答案 0 :(得分:2)
手动'机械'按钮需要去抖动。这一点以及推按钮不需要高I / O性能的事实意味着GPIO中断是一种尴尬的过度杀伤。它可以'当然,要完成,但用定时器中断轮询GPIO端口更容易,更安全,存储输入状态并与之前的状态进行比较。如果GPIO行已经更改状态以获得足够数量的样本,那么您可以使用按钮事件并对其进行操作。
如果您正在使用任务操作系统,您可以挂钩现有的计时器中断 - 它只是处理GPIO轮询的一些指令,因此您不应该看到任何明显的性能命中。如果确定已按下/释放按钮,则可以发信号通知信号量,以便等待的线程可以快速处理事件。
答案 1 :(得分:2)