1.WiringPi库介绍
(1)Wiringpi是一个很棒的树莓派IO控制库,提供了丰富的接口:GPIO控制,中断,多线程等等,java的pi4j项目也是基于wiringpi
(2)在使用wiringPi库时,你需要包含头文件 #include<wiringPi.h>。凡是写wiringPi的程序,都包含这个头文件。
2.WiringPi库安装编译和运行
(1)安装
进入wiringPi的官网下载安装包
进入安装包所在的目录执行以下命令
tar xfz wiringpixxx.tar.gz
cd wiringpixxx
/build
验证wiringPi是否安装成功,输入gpio-v,会在终端中输出wiringpi的信息,否则安装失败
(2)编译和运行
编译: gcc xxx.c ‐o xxx ‐lwiringpi
运行: sudo ./xxx
3.硬件初始化函数
使用wiringpi时,必须在执行任何操作前初始化树莓派,否则程序不能正常工作
可以调用下表函数之一进行初始化,它们都会返回一个int,返回-1表示初始化失败。
int wiringPiSetup (void) | 返回:执行状态,-1表示失败 | 当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。引脚的编号为 0~16 需要root权限 |
int wiringPiSetupGpio (void) | 返回执行状态,-1表示失败 | 当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表。 需要root权限 |
wiringPiSetupPhys(void) | 不常用,不做介绍 | / |
wiringPiSetupSys (void) ; | 不常用,不做介绍 | / |
4. 通用GPIO控制函数
5.时间控制函数
unsigned int millis (void) | 这个函数返回 一个 从你的程序执行 wiringPiSetup 初始化函数(或者wiringPiSetupGpio ) 到 当前时间 经过的 毫秒数。 返回类型是unsigned int,最大可记录 大约49天的毫秒时长。 |
unsigned int micros (void) | 这个函数返回 一个 从你的程序执行 wiringPiSetup 初始化函数(或者wiringPiSetupGpio ) 到 当前时间 经过的 微秒数。 返回类型是unsigned int,最大可记录 大约71分钟的时长。 |
void delay (unsigned int howLong) | 将当前执行流暂停 指定的毫秒数。因为Linux本身是多线程的,所以实际暂停时间可能会长一些。参数是unsigned int 类型,最大延时时间可达49天 |
void delayMicroseconds (unsigned int howLong) | 将执行流暂停 指定的微秒数(1000微秒 = 1毫秒 = 0.001秒)。 因为Linux本身是多线程的,所以实际暂停时间可能会长一些。参数是unsigned int 类型,最大延时时间可达71分钟 |
6.中断
wiringPi提供了一个中断处理注册函数,它只是一个注册函数,并不处理中断。他无需root权限。
7.softPwm,软件实现的PWM
树莓派硬件上支持的PWM输出的引脚有限,为了突破这个限制,wiringPi提供了软件实现的PWM输出API。
需要包含头文件:#include <softPwm.h>
编译时需要添pthread库链接 -lpthread
8.串口通信
使用时需要包含头文件:#include <wiringSerial.h>
参考大佬lulipro - 博客园