1、查看WiringPi库是否安装

  • 查看树莓派是否有WiringPi库
输入指令:gpio -v

输出下面代表有库,否则不认识指令

gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
  Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Unknown 
  * Device tree is enabled.
  *--> Raspberry Pi 3 Model B Rev 1.2
  * This Raspberry Pi supports user-level GPIO access.

2、API

int wiringPiSetup(void);

硬件初始化,使用wiringPi库必须初始化
返回值:-1失败

2.1、普通GPIO函数

包含头文件#include <wiringPi.h>
编译时链接库 -lwiringPi

void pinMode(int pin,int mode);

配置引脚,配置引脚io模式
参数1:pin引脚,gpio readall出来的表,wPi列的序号
参数2:模式,可取INPUT,OUTPUT,PWM_OUTPUT,GPIO_CLOCK
在这里插入图片描述
左边上面是树莓派靠圆环内侧,第一个引脚

void digitalWrite(int pin, int value);

控制引脚输出
参数1:pin引脚
参数2:LOW低电平,HIGH高电平

int digitalRead(int pin);

读取输入电平0,1
参数:pin引脚

void analogWrite(int pin,int value)

输出模拟量(树莓派不支持AD转换,要加模块)
参数1:pin
参数2:模拟量

int analogRead(int pin)

输入模拟量(树莓派不支持AD转换,要加模块)
参数:pin

void pwmWrite(int pin,int value)

输出PWM波,pin只能是1脚
参数1:pin
参数2:写入到PWM寄存器的值,0-1024

void pullUpDnControl(int pin,int pud)

拉电阻模式
参数1:pin
参数2:PUD_OFF关闭拉电阻,PUD_DOWN下拉,PUD_UP上拉

2.2、时间控制函数

unsigned int millis(void)

返回从硬件初始化开始,程序执行到现在的毫秒级数
硬件初始化函数:wiringPiSetup
最大可记录49天

unsigned int micros(void)

和上面函数一样,这个是微秒级数
最大记录71分钟

void delay(unsigned int howLong)

延时函数,毫秒级

void delayMicroseconds(unsigned int howLong)

延时函数,微妙级

2.3、软件实现PWM函数

包含头文件#include<softPwm.h>
编译时添加库连接 -lpthread

int softPwmCreate(int pin,int initialValue,int pwmRange)

使用一个指定pin引脚,创建一个模拟的PWM输出引脚
返回值:0成功
参数1:pin
参数2:引脚输出的初始值
参数3:PWM值范围上限,建议100

void softPwmWrite(int pin,int value)

更新引脚PWM值
参数1:pin
参数2:PWM引脚输出值

2.4、串口通信

包含头文件#include <wiringSerial.h>
用之前要改树莓派的启动文件cmdline.txt,把默认串口用作打印启动终端删掉
打开文件sudo vi /boot/cmdline.txt
删掉console=seria10,115200

int serialOpen(char *device, int baud)

打开并初始化串口
返回值:成功文件描述符,-1失败
参数1:串口地址,设备目录,/dev/ttyAMA0
参数2:波特率

void serialClose(int fd)

关闭串口
参数:文件描述符,关闭的串口

void serialPutchar(int fd, unsigned char c)

发送一个字节数据,一个字符
参数1:fd
参数2:发送的字符

void serialPuts(int fd,char*s)

发送字符串
参数1:fd
参数2:发送的字符串

void serialPrintf(int fd,char *message,...)

发送数据
参数1:fd
参数2:发送的字符串

int serialDataAvail(int fd)

获取串口缓冲区字节数
返回值:缓冲区字节数,可读取的字节数,-1错误
参数:fd

int serialGetchar(int fd)

读取一个字节数据
返回值:读取到的字符
参数:fd

void serialFlush(int fd)

清空串口缓冲区所有数据
参数:fd

*size_t write(int fd,const void*buf,size_t count)

Linux标准IO库函数,头文件#include<unistd.h>
返回值:实际发送字符数,-1错误
参数1:fd
参数2:发送的数据
参数3:字节个数

*size_t read(int fd,void *buf,size_t count)

Linux标准IO库函数,头文件#include<unistd.h>
返回值:实际接收字符数,-1错误
参数1:fd
参数2:接收的数据
参数3:字节个数

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐