【发布时间】:2014-05-23 07:22:05
【问题描述】:
大家好,我需要一些帮助。我正在 ARM 中制作 c++ 嵌入式应用程序。我需要一个按钮事件,我在互联网上寻找,我发现最好的方法是中断。我知道我可以通过终端设置一个引脚,例如“echo raise > /sys/.../gpio/gpio81/edge”。但是我需要知道如何从我的 C++ 应用程序中获取中断,我只需要一些示例,因为我不知道是否必须使用一些特殊的库。
谢谢你们,我希望有人可以帮助我。
【问题讨论】:
大家好,我需要一些帮助。我正在 ARM 中制作 c++ 嵌入式应用程序。我需要一个按钮事件,我在互联网上寻找,我发现最好的方法是中断。我知道我可以通过终端设置一个引脚,例如“echo raise > /sys/.../gpio/gpio81/edge”。但是我需要知道如何从我的 C++ 应用程序中获取中断,我只需要一些示例,因为我不知道是否必须使用一些特殊的库。
谢谢你们,我希望有人可以帮助我。
【问题讨论】:
手动“机械”按钮需要去抖动。那个,以及按下按钮不需要高 I/O 性能的事实,意味着 GPIO 中断是一种尴尬的矫枉过正。当然可以,但使用定时器中断轮询 GPIO 端口、存储输入状态并与之前的状态进行比较会更容易、更安全。如果 GPIO 线路的状态改变了足够多的样本,那么您就有了按钮事件并且可以对其进行操作。
如果您使用的是任务操作系统,您可以挂钩现有的定时器中断 - 它只是处理 GPIO 轮询的几条指令,因此您不会看到任何明显的性能损失。如果确定按钮已被按下/释放,您可以发出信号量,以便等待线程可以快速处理事件。
【讨论】:
【讨论】: