wiringPi安装
wiringPi其实和BCM2835 library类似,也是通过memmap, IOmap来实现在用户空间直接操作底层寄存器
wiringPi
http://wiringpi.com/WiringPiis aPINbased GPIO access library written in C for the BCM2835, BCM2836 and BCM2837 SoC devices used in allRaspberry Pi.versions.
在之前编译的系统中wiringPi已经预装了, gpio readall可以读出gpiopi@raspberrypi:~ $ gpio readall
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| | | 3.3v | | | 1 || 2 | | | 5v | | |
| 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | |
| 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |
| 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 |
| | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 |
| 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 |
| 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | |
| 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 |
| | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 |
| 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | |
| 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 |
| 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 |
| | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 |
| 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 |
| 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | |
| 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 |
| 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | |
| 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 |
| 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 |
| | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 |
+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+
| BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |
+-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+
gpio在/usr/bin下pi@raspberrypi:~ $ whatis gpio
gpio (1) - Command-line access to Raspberry Pi's GPIO
pi@raspberrypi:~ $ whereis gpio
gpio: /usr/bin/gpio /usr/share/man/man1/gpio.1
查看lib, include, 已经安装好了pi@raspberrypi:/usr/lib $ ls |grep wiringPi
libwiringPiDev.so
libwiringPiDev.so.2.44
libwiringPi.so
libwiringPi.so.2.44pi@raspberrypi:/usr/include $ ls | grep wiringPi
wiringPi.h
wiringPiI2C.h
wiringPiSPI.h
将led.c copy到树莓派,编译,生成led, 执行,闪灯#include
char LED = 25;
int main(void)
{
if(wiringPiSetup() < 0)return 1;
pinMode (LED,OUTPUT) ;
while(1)
{
digitalWrite(LED, 1) ;
delay (200);
digitalWrite(LED, 0) ;
delay (200);
}
}
makefileled:led.c
gcc -Wall led.c -o led -lwiringPi
gcc -Wall pwm.c -o pwm -lwiringPi
clean:
rm led pwm
wiringPi安装
更新软件,输入以下指令:sudo apt-get updatesudo apt-get upgrade通过GIT获得wiringPi的源代码git clone git://git.drogon.net/wiringPi若需要更新wiringPi。cd wiringPigit pull origin进入wiringPi目录并安装wiringPicd wiringPi./buil安装wiringpi就到这里了,科科
转载于:https://www.cnblogs.com/smartkeke/p/6820447.html
wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等
检查树莓派是否安装 wiringPi,输入:gpio -v // 会在终端中输出相关 wiringPi 的信息,否则没有安装
使用 gcc 编译器时要添加库:
gcc xxx.c -lwiringPi
RPi.GPIO目前还不支持I2C、SPI等接口,且缺乏高精度定时功能。wiringpi除了提供C语言接口之外,目前已经支持Python等语言的扩展。对于GPIO的操作非常强大。
源码地址:https://github.com/WiringPi/WiringPi-Python
安装pip:
apt-get install python-pip
安装wiringpi:
pip install wiringpi
查看安装结果:
root@raspberrypi:/# pip list | grep wiring
wiringpi (2.44.0)
root@raspberrypi:/#wiringpi Python操作GPIO用法:
import wiringpi #导入wiringpi库,老版本是导入wiringpi2,当前版本已经改为wiringpi
wiringpi.wiringPiSetup() #设置GPIO编号为wPi方式
wiringpi.wiringPiSetupSys() #设置GPIO编号为BCM方式
wiringpi.wiringPiSetupGpio() #设置GPIO编号为BCM方式
wiringpi.pinMode(6,1) #设置pin6为输出
wiringpi.digitalWrite(6,1) #pin6电平置为高
wiringpi.digitalRead(6) #读取pin6的电平
使用wiringpi Python接口操作GPIO点亮led灯:
#!/usr/bin/python import wiringpi #wiringpi.wiringPiSetupSys() #wiringpi.pinMode(25,1) #wiringpi.digitalWrite(25,1) #wiringpi.wiringPiSetup() #wiringpi.pinMode(6,1) #wiringpi.digitalWrite(6,1) wiringpi.wiringPiSetupGpio() wiringpi.pinMode(25,1) wiringpi.digitalWrite(25,1)