大家好,我需要一些帮助。我正在 ARM 中制作一个 C++ 嵌入式应用程序。我需要获得一个按钮事件,我在互联网上寻找,我发现最好的方法是中断。我知道我可以通过终端设置一个引脚,例如“echo raise >/sys/.../gpio/gpio81/edge”。但我需要知道发生中断时如何从我的 C++ 应用程序中获取中断,我只需要一些示例,因为我不知道是否必须使用一些特殊的库。
谢谢大家,希望有人能帮助我。
最佳答案
手动“机械”按钮需要防抖。这一点,以及按下按钮不需要高 I/O 性能的事实,意味着 GPIO 中断是一种尴尬的过度杀伤力。当然这是可以做到的,但是使用定时器中断轮询 GPIO 端口、存储输入状态并与之前的状态进行比较会更容易、更安全。如果 GPIO 线已更改足够数量的样本的状态,则您将获得按钮事件并可以对其进行操作。
如果您使用的是任务操作系统,您可以 Hook 现有的计时器中断 - 它只是处理 GPIO 轮询的几条指令,因此您不会看到任何明显的性能影响。如果确定按钮已被按下/释放,您可以发出信号量信号,以便等待线程可以快速处理该事件。
关于c++ - 使用 C++ 处理 GPIO 按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823279/