用于C的GPIO库


8

我想利用我的Raspberry Pi 2上的GPIO引脚,但是由于我个人不喜欢该语言,所以我不希望使用Python。但是,我似乎找不到关于C的使用的任何信息,只有Python。

有官方的C API吗?如果是这样,我在哪里可以找到教程?如果没有,我有什么选择?


这不是C具体,但对于一般的GPIO编程语言的支持,请参阅列表elinux.org/RPi_GPIO_Code_Samples

我发现了两个最新的C API和一个C ++ API,并在相关文章中提供了一个示例:C控件GPIO引脚
gorlux,

Answers:


10

没有官方图书馆

有几种选择。我通常使用http://wiringpi.com。这用于gpio最近Raspbian版本中包含的实用程序。

琼的pigpio图书馆位于https://github.com/joan2937/pigpio,她也有Python包装器。如果要使用套接字或守护程序,则建议这样做,它对硬件和对引脚组的批量访问具有良好的支持。

两者都有大量的文档。

还有其他一些,但有些似乎有些过时了。


2

您没有提到像Milliways这样的操作系统,我想您是说Raspbian或其他GNU / Linux。Windows IoT将是独立的。

所有的python库都是C库的包装器,这并不罕见。从头开始用C以外的方式创建库。有三种:

这些已经至少存在了几年,并且已经得到积极维护(例如,libbcm2835的最新版本是3-4个月前)。

但是,根据您想要做什么,您不需要任何库。如此处所述,除了用于基本功能的sysfs接口外,还有用于I2CSPI的可移植用户级C级接口,这些接口使用内核驱动程序。这样就剩下PWM了-要访问和使用需要使用这三个库之一的硬件通道。或者,如琼在对另一个问题的评论中提到的那样,如果您要计算非常快速的脉冲(在这种情况下,我将尝试几种方法)。

我并没有尝试每种组合,但是假设pi特定的库是经过合理编码的,只要您将它们用于以下用途,就应该可以将它们与便携式接口进行混合和匹配(例如,将常规I2C API和connectionPi用于PWM)。单独的引脚。这似乎是一种奇怪的方法,但是如果您使用的是模块化代码,并且希望使各个部分尽可能地可移植,则这是有道理的。例如,如果要编写I2C传感器的接口,请以内核驱动程序API为基础。然后,如果要在带有PWM的程序中使用它,请对PWM使用三个库之一。用Pigpio / wiringPi / libbcm2835编写的代码仅适用于Raspberry Pi;使用内核驱动程序API编写的代码可在任何Linux系统上使用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.