树莓派ZeroW学习笔记【0】wiringPi安装和测试
一、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安装和测试相关推荐
- 树莓派ZeroW学习笔记【2】wiringPi串口编程
一.树莓派ZeroW串口(UART)使用环境搭建 根据官方信息(https://www.raspberrypi.org/documentation/configuration/uart.md),树莓派 ...
- 【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用
树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...
- csi python 摄像头 树莓派_【新手入门】树莓派Raspberry学习笔记4 摄像头安装+配置+简单使用...
树莓派Raspberry Pi3B+学习笔记4 今日达成: ①摄像头安装+配置+简单使用 ②树莓派上python编程初尝试 这份笔记里主要讲的是摄像头的安装+配置+简单使用. 一.摄像头和树莓派连接+ ...
- 中标麒麟学习笔记0:安装极点五笔输入法
中标麒麟7桌面版官方软件源没有极点五笔,需要自行手动安装.据中标官方,该系统是基于fedora 21版的(见http://www.cs2c.com.cn/news/index.php?id=987), ...
- Rabbitmq学习笔记007---Centos7下安装rabbitmq_测试通过
JAVA技术交流QQ群:170933152 1.在Centos下安装rabbitmq,之前都是在windows中安装的,centos下安装还挺麻烦 这里介绍两种安装方法: 第一种,我测试了,太慢了,不 ...
- 树莓派4B学习笔记——IO通信篇(UART)
文章目录 UART简介 树莓派使用UART与串口屏通信 串口屏简介 硬件连接 配置串口接口 树莓派打开UART接口 树莓派安装串口调试助手 编程实现 wiringSerial.h Serial简介 C ...
- 2022最新树莓派4B学习笔记:系统备份 OpenCV SPI TFT HTML
树莓派4B学习笔记 一.首次使用 1.系统烧录 2.优化配置与备份 3.一些基本操作 二.摄像头 三.Pi Dashboard好看的仪表盘 四.OpenCV安装编译 五.SPI_TFT屏幕 六.最终代 ...
- STM32F103CUBE学习笔记 一 环境安装
STM32F103CUBE学习笔记一 stm32cubemx安装 jre安装 stm32cubemx安装 stm32cubemx创建工程 准备工作 配置时钟 KEIL PACK安装 keil安装 st ...
- tensorflow学习笔记一:安装调试
denny的学习专栏 徐其华 博客园 首页 新随笔 联系 管理 订阅 随笔- 129 文章- 0 评论- 791 tensorflow学习笔记一:安装调试 用过一段时间的caffe后,对caff ...
最新文章
- Jmeter分布式压测方案
- JavaScript跨域总结与解决办法(转)
- SQL语句执行效率及分析(note)
- 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
- SPI通信原理---STM32F4--HAL
- [Phoenix] 十、全局索引设计实践
- python 武沛齐_武沛齐 - 主页
- 不能返回函数内部new分配的内存的引用_JNI开发之局部引用、全局引用和弱全局引用(三)...
- MySQL高级知识(十一)——Show Profile
- 安装jdk-linux-i586.rpm.bin
- 调试技巧之调用堆栈 - Call stack
- MongoDB下载安装踩坑实录
- CentOS 7 安装 Weadmin(ITOSS)
- 如何高效,安全,稳定的管理多个亚马逊,facebook,google等帐号? 如何配合使用VMlogin防关联,反指纹浏览器操作,同时多开多个帐号?911 S5 多端口转发如何设置?
- 历代iPhone的分辨率
- 华农计算机软件就业,华农17届就业报告出炉!毕业生月薪集中在4-6k!
- python pyd 速度提升_pyd打包补充
- namecheap,namesilo域名注册优势,国外域名注册,2018 namesilo注册优惠码
- 苹果海洋视频源直播源文件
- 使用zabbix_sender发送文本