一、wiringPi简介

【1】wiringPi是仅应用于树莓派平台的GPIO控制库函数,遵循GNU LGPLv3开源协议,并由GIT工具维护,任何人都可以免费使用该软件包。wiringPi使用C或者C++开发,可以很方便的被其它语言转换调用,例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统,这使得熟悉arduino的用户使用wringPi更为方便。

【2】wiringPi包括一套gpio控制命令,使用gpio命令时可以很方便的控制树莓派GPIO管脚。用户可以通过shell脚本利用gpio命令控制或查询GPIO管脚。树莓派具有26个普通IO引脚,利用端口复用时支持I2C、SPI和UART通信协议,不使用复用时也可以作为GPIO使用。

【3】wiringPi可以扩展,用户可以利用wiringPi的内部模块或把自定义的扩展模块集成到wiringPi中以扩展更多的GPIO接口或实现更多的功能。

wiringPi官网:http://wiringpi.com/

作者:Gordon Henderson

wiringPi作者声明:

WiringPi is developed directly on a Raspberry Pi running 32-bit Raspbian. I do not support any other platform, cross compiling or operating systems.

翻译:WiringPi是直接在树莓派32位操作系统Raspbin上开发的,不支持其它操作系统、平台或交叉编译环境。

二、wiringPi安装

2.1、安装wiringPi

$sudo apt-get install wiringpi
//如果需要更新WiringPi,可以使用系统更新命令:
$sudo apt-get update
$sudo apt-get upgrade

WiringPi安装完成后,可以使用下面的命令测试是否安装成功:

$sudo gpio -v

root@raspberrypi:~# gpio -v
gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warrantyRaspberry Pi Details:Type: Pi Zero-W, Revision: 01, Memory: 512MB, Maker: Sony * Device tree is enabled.*--> Raspberry Pi Zero W Rev 1.1* This Raspberry Pi supports user-level GPIO access.
root@raspberrypi:~# 

2.2、WiringPi的引脚定义
WiringPi对树莓派物理引脚进行了封装,定义了一套自己的引脚编号。
如果要查看当前树莓派的引脚编号,可以使用如下命令:
$sudo gpio readall

root@raspberrypi:~# gpio readall+-----+-----+---------+------+---+-Pi ZeroW-+---+------+---------+-----+-----+| BCM | wPi |   Name  | Mode | V | Physical | V | Mode | Name    | wPi | BCM |+-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+|     |     |    3.3v |      |   |  1 || 2  |   |      | 5v      |     |     ||   2 |   8 |   SDA.1 |   IN | 1 |  3 || 4  |   |      | 5v      |     |     ||   3 |   9 |   SCL.1 |   IN | 1 |  5 || 6  |   |      | 0v      |     |     ||   4 |   7 | GPIO. 7 |   IN | 1 |  7 || 8  | 1 | ALT0 | TxD     | 15  | 14  ||     |     |      0v |      |   |  9 || 10 | 1 | ALT0 | RxD     | 16  | 15  ||  17 |   0 | GPIO. 0 |   IN | 1 | 11 || 12 | 0 | 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 | 0 | 29 || 30 |   |      | 0v      |     |     ||   6 |  22 | GPIO.22 |   IN | 0 | 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 ZeroW-+---+------+---------+-----+-----+
root@raspberrypi:~# 

至此,wiringPi已经安装到了树莓派ZeroW上。

三、wiringPi库函数

3.1 WiringPi配置函数(WiringPi Setup functions);
3.2 WiringPi核心函数(WiringPi Core functions);
3.3 树莓派专用函数(Raspberry Pi Specific functions);
3.4 时间函数(Time functions);
3.5 程序优先级/中断/线程函数(Process priority/interrupts/thread functions);
3.6 串口通信库函数(Serial Library functions);
3.7 SPI通信库函数(SPI Library functions);
3.8 I2C通信库函数(IC2 Library functions);
3.9 移位库函数(Shift Library functions);
3.10 软件PWM库函数(Software PWM Library functions);
3.11 软件方波/音频库函数(Software Tone Library functions);

四、wiringPi使用

wiringPi安装后,会将相应的*.h头文件添加到‘/usr/include’目录下

/usr/local/include/wiringPi.h          提供基础的服务,包括GPIO。
/usr/local/include/wiringPiI2C.h    提供I2C相关支持。
/usr/local/include/wiringPiSPI.h    提供SPI相关支持。
/usr/local/include/wiringPiShift.h

root@raspberrypi:/usr/lib# cd /usr/include/
root@raspberrypi:/usr/include# ls
ads1115.h            drcSerial.h       gertboard.h     linux          monetary.h  piGlow.h        rpc            stdlib.h       values.h
aio.h                ds1302.h          getopt.h        locale.h       mqueue.h    piNes.h         rpcsvc         string.h       video
aliases.h            ds18b20.h         glob.h          malloc.h       mtd         pngconf.h       sched.h        strings.h      wait.h
alloca.h             elf.h             gnumake.h       math.h         net         png.h           scrollPhat.h   stropts.h      wchar.h
argp.h               endian.h          gnu-versions.h  max31855.h     netash      pnglibconf.h    scsi           sudo_plugin.h  wctype.h
argz.h               envz.h            grp.h           max5322.h      netatalk    poll.h          search.h       syscall.h      wiringPi.h
ar.h                 err.h             gshadow.h       maxdetect.h    netax25     printf.h        semaphore.h    sysexits.h     wiringPiI2C.h
arm-linux-gnueabihf  errno.h           htu21d.h        mcheck.h       netdb.h     proc_service.h  setjmp.h       syslog.h       wiringPiSPI.h
arpa                 error.h           iconv.h         mcp23008.h     neteconet   protocols       sgtty.h        tar.h          wiringSerial.h
asm-generic          execinfo.h        ifaddrs.h       mcp23016.h     netinet     pseudoPins.h    shadow.h       termio.h       wiringShift.h
assert.h             expat_external.h  inttypes.h      mcp23016reg.h  netipx      pthread.h       signal.h       termios.h      wordexp.h
bmp180.h             expat.h           iproute2        mcp23017.h     netiucv     pty.h           sn3218.h       tgmath.h       wpiExtensions.h
byteswap.h           fcntl.h           langinfo.h      mcp23s08.h     netpacket   pwd.h           softPwm.h      thread_db.h    xen
c++                  features.h        lastlog.h       mcp23s17.h     netrom      python2.7       softServo.h    threads.h      zconf.h
cifsidmap.h          fenv.h            lcd128x64.h     mcp23x0817.h   netrose     python3.7       softTone.h     time.h         zlib.h
clif.h               fmtmsg.h          lcd.h           mcp23x08.h     nfs         python3.7m      sound          ttyent.h
complex.h            fnmatch.h         libgen.h        mcp3002.h      nl_types.h  rdma            spawn.h        uchar.h
cpio.h               freetype2         libintl.h       mcp3004.h      nss.h       re_comp.h       sr595.h        ucontext.h
crypt.h              fstab.h           libmnl          mcp3422.h      obstack.h   regex.h         stab.h         ulimit.h
ctype.h              fts.h             libpng          mcp4802.h      paths.h     regexp.h        stdc-predef.h  unistd.h
dirent.h             ftw.h             libpng16        memory.h       pcf8574.h   reglib          stdint.h       utime.h
dlfcn.h              gconv.h           limits.h        misc           pcf8591.h   resolv.h        stdio_ext.h    utmp.h
drcNet.h             gdb               link.h          mntent.h       piFace.h    rht03.h         stdio.h        utmpx.h
root@raspberrypi:/usr/include#

调用的时候只需要在代码中添加#include <wiringPi.h>即可,同理还有I2C、SPI、UART等头文件。

#include <wiringPi.h>
#include <stdio.h>#define PIN 5int main(void)
{char i=0;wiringPiSetup();pinMode (PIN, OUTPUT);for(i=0;;i++){printf("gpio out: %d\r\n", i);digitalWrite(PIN, i%2); delay(500);}printf("gpio out end\r\n");return 0;
}

然后使用

gcc main.c -o main -lwiringPi进行编译

然后使用./main进行执行

root@raspberrypi:/usr/include# cd /home/pi/T001_WiringPi_blink/
root@raspberrypi:/home/pi/T001_WiringPi_blink# ls
gpio_out  gpio_out.c  main  main.c  uart_inout  uart_inout.c
root@raspberrypi:/home/pi/T001_WiringPi_blink# gcc main.c -o main -lwiringPi
root@raspberrypi:/home/pi/T001_WiringPi_blink# ./main
gpio out: 0
gpio out: 1
gpio out: 2
gpio out: 3
gpio out: 4
gpio out: 5
gpio out: 6
gpio out: 7
gpio out: 8
gpio out: 9
gpio out: 10
gpio out: 11
gpio out: 12
gpio out: 13
gpio out: 14
gpio out: 15
gpio out: 16
gpio out: 17
gpio out: 18
gpio out: 19
gpio out: 20
gpio out: 21
gpio out: 22
gpio out: 23
gpio out: 24
gpio out: 25
gpio out: 26
gpio out: 27
gpio out: 28
gpio out: 29
gpio out: 30
gpio out: 31
gpio out: 32
gpio out: 33
gpio out: 34
gpio out: 35
gpio out: 36
gpio out: 37
gpio out: 38
gpio out: 39
gpio out: 40
^Z
[1]+  Stopped                 ./main
root@raspberrypi:/home/pi/T001_WiringPi_blink# 

树莓派ZeroW学习笔记【0】wiringPi安装和测试相关推荐

  1. 树莓派ZeroW学习笔记【2】wiringPi串口编程

    一.树莓派ZeroW串口(UART)使用环境搭建 根据官方信息(https://www.raspberrypi.org/documentation/configuration/uart.md),树莓派 ...

  2. 【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用

    树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...

  3. csi python 摄像头 树莓派_【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用...

    树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...

  4. 中标麒麟学习笔记0:安装极点五笔输入法

    中标麒麟7桌面版官方软件源没有极点五笔,需要自行手动安装.据中标官方,该系统是基于fedora 21版的(见http://www.cs2c.com.cn/news/index.php?id=987), ...

  5. Rabbitmq学习笔记007---Centos7下安装rabbitmq_测试通过

    JAVA技术交流QQ群:170933152 1.在Centos下安装rabbitmq,之前都是在windows中安装的,centos下安装还挺麻烦 这里介绍两种安装方法: 第一种,我测试了,太慢了,不 ...

  6. 树莓派4B学习笔记——IO通信篇(UART)

    文章目录 UART简介 树莓派使用UART与串口屏通信 串口屏简介 硬件连接 配置串口接口 树莓派打开UART接口 树莓派安装串口调试助手 编程实现 wiringSerial.h Serial简介 C ...

  7. 2022最新树莓派4B学习笔记:系统备份 OpenCV SPI TFT HTML

    树莓派4B学习笔记 一.首次使用 1.系统烧录 2.优化配置与备份 3.一些基本操作 二.摄像头 三.Pi Dashboard好看的仪表盘 四.OpenCV安装编译 五.SPI_TFT屏幕 六.最终代 ...

  8. STM32F103CUBE学习笔记 一 环境安装

    STM32F103CUBE学习笔记一 stm32cubemx安装 jre安装 stm32cubemx安装 stm32cubemx创建工程 准备工作 配置时钟 KEIL PACK安装 keil安装 st ...

  9. tensorflow学习笔记一:安装调试

    denny的学习专栏 徐其华 博客园 首页 新随笔 联系 管理 订阅 随笔- 129  文章- 0  评论- 791  tensorflow学习笔记一:安装调试 用过一段时间的caffe后,对caff ...

最新文章

  1. Jmeter分布式压测方案
  2. JavaScript跨域总结与解决办法(转)
  3. SQL语句执行效率及分析(note)
  4. 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
  5. SPI通信原理---STM32F4--HAL
  6. [Phoenix] 十、全局索引设计实践
  7. python 武沛齐_武沛齐 - 主页
  8. 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...
  9. MySQL高级知识(十一)——Show Profile
  10. 安装jdk-linux-i586.rpm.bin
  11. 调试技巧之调用堆栈 - Call stack
  12. MongoDB下载安装踩坑实录
  13. CentOS 7 安装 Weadmin(ITOSS)
  14. 如何高效,安全,稳定的管理多个亚马逊,facebook,google等帐号? 如何配合使用VMlogin防关联,反指纹浏览器操作,同时多开多个帐号?911 S5 多端口转发如何设置?
  15. 历代iPhone的分辨率
  16. 华农计算机软件就业,华农17届就业报告出炉!毕业生月薪集中在4-6k!
  17. python pyd 速度提升_pyd打包补充
  18. namecheap,namesilo域名注册优势,国外域名注册,2018 namesilo注册优惠码
  19. 苹果海洋视频源直播源文件
  20. 使用zabbix_sender发送文本

热门文章

  1. java htmlparser 使用教程_htmlParser使用教程
  2. Soot 静态分析框架(七)模块分析
  3. IT 攻城狮必备的十大算法思想
  4. 2021美赛数学建模A题翻译版
  5. 纯粹,极致!他用两个词阐释了UCloud | 人物志
  6. 椭球拟合的电子罗盘磁差补偿_椭球拟合的电子罗盘磁差补偿
  7. 瑞萨单片机之data flash的使用(五)
  8. 小丸子总结node.js的一些问题
  9. Cisco packet tracer基本操作(快速入门了解这个软件)
  10. 基于完全分布式Hadoop -hive安装