树莓派 wiringPi 库

article/2025/10/27 12:37:34

wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等

检查树莓派是否已安装 wiringPi,在树莓派终端输入:

gpio -v   // 会在终端中输出相关 wiringPi 的信息,否则没有安装

安装 wiringPi:

sudo apt-get install wiringpi

wiringPi 官网

使用 wiringPi 用 gcc 编译器编译时需要链接 wiringPi:

gcc xxx.c -lwiringPi

树莓派4B安装最新版 wiringPi 库:

cd /tmpwget https://project-downloads.drogon.net/wiringpi-latest.debsudo dpkg -i wiringpi-latest.deb

在这里插入图片描述下载为 2.52 版本:

wiringPi 库常用 API:

1.树莓派引脚图:

gpio readall   // 在树莓派终端输入指令查看树莓派 io 口引脚图+-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+| 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 | 0 | 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 | 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 3B--+---+------+---------+-----+-----+

2.硬件初始化函数:
使用 wiringPi 时,你必须在执行任何操作前初始化树莓派,否则程序不能正常工作

函数原型说明
int wiringPiSetup (void);当使用这个函数初始化树莓派引脚时,程序使用的是 wiringPi 引脚编号表,引脚的编号为 0~16,需要 root 权限,成功时返回执行状态,失败时返回 -1
int wiringPiSetupGpio (void);当使用这个函数初始化树莓派引脚时,程序中使用的是 BCM GPIO 引脚编号表,需要 root 权限,成功时返回执行状态,失败时返回 -1

3.通用GPIO控制函数:

函数原型参数说明
void pinMode (int pin, int mode);int pin:引脚编号;int mode:配置的IO模式(INPUT、OUTPUT、PWM_OUTPUT,GPIO_CLOCK)设置引脚的输入和输出模式(IO模式)以及 PWM 的输入和输出模式(IO模式),只有 wPi1(BCM18)支持 PWM 输出,只有 wPi7(BCM4)支持 GPIO_CLOCK 输出
void digitalWrite (int pin, int value);int pin:引脚编号;int value:配置的电平(HIGH、LOW)对一个已配置为输出模式的引脚 输出指定的电平信号
int digitalRead (int pin);int pin:引脚编号;返回引脚上的电平(HIGH、LOW)读取一个引脚的电平值

4.时间控制函数:

函数原型说明
unsigned int millis (void);该函数返回一个从程序执行 wiringPiSetup(); 或 wiringPiSetupGpio(); 初始化函数到当前时间所经过的毫秒数,返回值类型是 unsigned int,最大可记录大约 49天的毫秒时长
unsigned int micros (void);该函数返回一个从程序执行 wiringPiSetup(); 或 wiringPiSetupGpio(); 初始化函数到当前时间所经过的微秒数,返回值类型是 unsigned int,最大可记录大约 71分钟的微秒时长
void delay (unsigned int howLong);将当前执行流暂停指定的毫秒数,最大延时时间可达 49天
void delayMicroseconds (unsigned int howLong);将执行流暂停指定的微秒数,最大延时时间可达 71分钟
1 秒(s)=1000 毫秒(ms)1 秒(s)=1000000 微秒(μs)

5.串口通信:

#include <wiringSerial.h>	// 以下 API 包含该头文件
函数原型参数说明
int serialOpen(char *device, int baud);char *device:串口的地址,在 Linux 中就是设备所在的目录,默认一般是"/dev/ttyAMA0"int baud:波特率;返回值:成功返回文件描述符,失败返回 -1打开并初始化串口
void serialClose(int fd);inf fd:文件描述符关闭 fd 关联的串口
void serialPutchar(int fd, unsigned char c);int fd:文件描述符;unsigned char c:要发送的数据发送一个字节的数据到串口
void serialPuts(int fd, char *s);inf fd:文件描述符;char *s:要发送的数据发送一个字符串到串口
void serialPrintf(int fd, char *message, …);int fd:文件描述符;char *message:格式化的字符串发送一个字符串到串口(类似 C 语言标准库中的 printf(); 函数)
int serialDataAvail(int fd);int fd:文件描述符;返回值:成功返回字节数,失败返回-1获取串口缓存中可用的字节数
int serialGetchar(int fd);int fd:文件描述符;返回值:读取的数据从串口读取一个字节数据并返回,如果串口缓冲区中没有可用的数据,则会等待10 秒,若 10 秒后仍无数据,则返回-1,所以读取前最好调用serialDataAvail();判断,读取多个字符则采用地址偏移的方式读取
void serialFlush(int fd);int fd:文件描述符清空串口缓冲区的数据

头文件:

#include <wiringSerial.h>
#include <unistd.h>
函数原型说明
ssize_t read(int fd, void *buf, size_t count);Linux下的标准IO库函数,向fd中读取count个字节的数据,存放到buf
ssize_t write(int fd, const void *buf, size_t count);Linux下的标准IO库函数,往fd中写入count个字节的数据,内容为buf的前count个字节的数据

6.点击了解更多.


http://chatgpt.dhexx.cn/article/sd4cW7TH.shtml

相关文章

树莓派安装wiringPi

在学习微雪的2-CH CAN FD HAT时&#xff0c;根据官网步骤在树莓派安装wiringPi sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级&#xff1a; wget https://project-downloads.drogon.net/wiringpi-latest.deb&#xff08;此链接安装可能出错&#xff0c;如果出…

解决wiringPi库与64位树莓派之间不兼容的问题

目录 一.问题现象&#xff1a; 二.解决方案&#xff08;网站&#xff09;可以直接点这下载 一.问题现象&#xff1a; 今天在练习wiringPi库的使用时候&#xff0c;在最后编译的时候出现了这个问题 主要问题是这个skipping incompatible&#xff01; skipping incompatible. …

树莓派安装WiringPi以及找不到wiringPi.h文件解决方法(图文教程)

目录 安装WiringPi 失败的过程&#xff1a; 选择的方法&#xff1a; 安装步骤&#xff1a; 找不到wiringPi.h文件解决方法 失败过程&#xff1a; 解决方法&#xff1a; 安装WiringPi 失败的过程&#xff1a; 通过分别使用sudo apt-get install wiringPi 和 wget https…

树莓派的wiringPi库

一、wiringPi库 树莓派的外设开发都是基于wiringPi库&#xff0c;wiringPi是树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程&#xff0c;等等。 wiringPi库的安装 进入 wiringPi的github (htt…

玩转树莓派三、树莓派安装GPIO库接口wiringpi

WiringPi简介 WiringPi 是由 Gordon Henderson 使用 C 语言编写的一个基于 PIN接口的 GPIO 控制函数库&#xff0c;适用于所有Raspberry Pi 中使用的 BCM2835、BCM2836 和 BCM2837 SoC 设备&#xff0c;使用过 Arduino 控制板的开发人员应该会对此非常熟悉。 wiringPi 包括一…

树莓派学习笔记——wiringPi I2C设备使用详解

1.前言 最近认真学习了树莓派&#xff0c;从浅到深认真分析了wiringPi实现代码&#xff0c;借助树莓派学习linux收获颇丰。深入学习linux一段时间后发现它非常有魅力&#xff0c;一个简单的IO口输出操作尽有那么多的“玩法”。wiringPi是一个简单易用的函数库&#xff0c;通过w…

wiringPi简介、安装和管脚说明,官方document

https://www.cnblogs.com/lulipro/p/5992172.html WiringPi API 教程 https://www.rubydoc.info/gems/wiringpi2/2.0.1/WiringPi/GPIO 硬件初始化函数 使用wiringPi时&#xff0c;你必须在执行任何操作前初始化树莓派&#xff0c;否则程序不能正常工作。 可以调用下表函数…

树莓派4B-WiringPi库的安装和使用 (C和Python版)

本文适合&#xff1a;掌握一定的linux常用基本命令&#xff0c;有C或Python编程基础的读者。 有很多入坑树莓派的新手会Python或者C语言&#xff0c;想玩转树莓派上的GPIO硬件资源&#xff0c;但是又不知道从何下手&#xff0c;本文就是一篇让新手入门树莓派GPIO硬件编程的文章…

(转)树莓派wiringPi库详解

https://www.cnblogs.com/lulipro/p/5992172.html <div id"post_detail">树莓派wiringPi库详解 wiringPi是一个很棒的树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程&#xf…

树莓派学习笔记——wiringPi GPIO使用详解

1.前言 最近认真学习了树莓派&#xff0c;从浅到深认真分析了wiringPi实现代码&#xff0c;借助树莓派学习linux收获颇丰。深入学习linux一段时间后发现它非常有魅力&#xff0c;一个简单的IO口输出操作尽有那么多的“玩法”。wiringPi是一个简单易用的函数库&#xff0c;通过w…

树莓派在下载Wiringpi时遇到的问题1.软件包 wiringpi 没有可安装候选2.失败:域名解析暂时失败。 wget: 无法解析主机地址 “project-downloads.drogon.ne

项目场景&#xff1a; 最近无聊,在玩实验室的树莓派,在装Wringpi时遇到了一些问题,记录一下 错误1 我用的是树莓派4B,在sudo apt-get install wiringpi时报了如下错误: 正在读取软件包列表… 完成 正在分析软件包的依赖关系树… 完成 正在读取状态信息… 完成 没有可用的软件…

树莓派学习笔记——wiringPi简介、安装和管脚说明

1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数&#xff0c;WiringPi遵守GUN Lv3。wiringPi使用C或者C开发并且可以被其他语言包转&#xff0c;例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统&#xff0c;这使得熟悉arduino的用户使用wri…

WiringPi介绍及安装方法

WiringPi介绍及安装方法 1.WiringPi简介 WiringPi是应用于树莓派平台的GPIO控制库函数&#xff0c;WiringPi遵守GUN Lv3。wiringPi使用C或者C开发并且可以被其他语言包转&#xff0c;例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统&#xff0c;这使得…

树莓派wiringPi库详解

达者为先 师者之意 树莓派wiringPi库详解 1 WiringPi安装2 wiringPi库编译和运行3 wiringPi库API大全3.1 硬件初始化函数3.2 通用GPIO控制函数3.3 时间控制函数3.4 中断3.5 多线程3.6 softPwm软件实现的PWM3.7 串口通信3.8 shift移位寄存器芯片API3.9 树莓派硬件平台特有的API…

第七课:树莓派WiringPi库

目录 一、WiringPi库介绍 二、WiringPi安装 方法一&#xff1a; 安装git工具&#xff08;已安装跳过&#xff09;&#xff08;前提已更换国内下载源&#xff09; ①&#xff1a;输入一下指令 ​②&#xff1a; 输入指令--在线获得 WiringPi 的源代码&#xff08;2019后不…

树莓派——wiringPi库详解

文章目录 查看树莓派引脚编号wiringPi库API大全硬件初始化函数通用GPIO控制函数时间控制函数串口通信串口通信配置测试代码串口通信实例 中断多线程其他 wiringPi&#xff08;特定平台&#xff0c;特定功能接口&#xff09;库是基于c语言开发的&#xff0c;提供了丰富的接口&am…

【树莓派】了解wiringPi库、控制继电器

目录 一、wiringPi库二、继电器1、继电器介绍及接线说明2、树莓派控制继电器 一、wiringPi库 wiringPi是一个很棒的树莓派IO控制库&#xff0c;使用C语言开发&#xff0c;提供了丰富的接口&#xff1a;GPIO控制&#xff0c;中断&#xff0c;多线程等。 在树莓派命令行输入gpio…

树莓派开发—— wiringPi 库的使用

一、wiringPi 的安装 参考文献&#xff1a; https://www.cnblogs.com/lulipro/p/5992172.html 进入 wiringPi的github (https://git.drogon.net/?pwiringPi;asummary) 下载安装包。点击页面的第一个链接的右边的snapshot,下载安装压缩包。 然后进入安装包所在的目录执行以下…

WiringPi安装及使用详解

这个文章先不要看&#xff0c;现在写的跟屎一样&#xff0c;我会断断续续的对本文章进行修改和优化&#xff0c;第一部分没问题&#xff0c;可以参考 WiringPi安装及使用详解 1、WiringPi的安装 2、Wiring常用命令详解 3、Python调用WiringPi库进行开发 1、安装WiringPi 登…

【wrodpress】wordpress发表文章后无法显示

搭建完wordpress&#xff0c;发表第一篇博客测试。文章发布后&#xff0c;首页已经能显示出文章的标题&#xff0c;但是点进去后却提示该页无法显示。 而且可以看到 因为我写的标题是文字&#xff0c;所以标题默认就是文字&#xff0c;而wordpress生成的链接中包含中文字符是…