【问题标题】:Handle GPIO Button event with C++使用 C++ 处理 GPIO 按钮事件
【发布时间】:2014-05-23 07:22:05
【问题描述】:

大家好,我需要一些帮助。我正在 ARM 中制作 c++ 嵌入式应用程序。我需要一个按钮事件,我在互联网上寻找,我发现最好的方法是中断。我知道我可以通过终端设置一个引脚,例如“echo raise > /sys/.../gpio/gpio81/edge”。但是我需要知道如何从我的 C++ 应用程序中获取中断,我只需要一些示例,因为我不知道是否必须使用一些特殊的库。

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

【问题讨论】:

    标签: c++ arm gpio


    【解决方案1】:

    手动“机械”按钮需要去抖动。那个,以及按下按钮不需要高 I/O 性能的事实,意味着 GPIO 中断是一种尴尬的矫枉过正。当然可以,但使用定时器中断轮询 GPIO 端口、存储输入状态并与之前的状态进行比较会更容易、更安全。如果 GPIO 线路的状态改变了足够多的样本,那么您就有了按钮事件并且可以对其进行操作。

    如果您使用的是任务操作系统,您可以挂钩现有的定时器中断 - 它只是处理 GPIO 轮询的几条指令,因此您不会看到任何明显的性能损失。如果确定按钮已被按下/释放,您可以发出信号量,以便等待线程可以快速处理事件。

    【讨论】:

    • 嗨马丁谢谢你的回答。所以你建议最好做一个定时器中断,但我怎么能用 C++ 做到这一点?我应该使用“time_t”变量和 time.h 库吗?抱歉,我没有中断和 GPIO 的经验
    【解决方案2】:

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

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

    还是谢谢你

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 2018-10-12
      • 2021-11-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-17
      • 2015-04-09
      • 1970-01-01
      相关资源
      最近更新 更多