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

article/2025/10/28 7:23:44

一、wiringPi 的安装

参考文献:
https://www.cnblogs.com/lulipro/p/5992172.html

进入 wiringPi的github (https://git.drogon.net/?p=wiringPi;a=summary) 下载安装包。点击页面的第一个链接的右边的snapshot,下载安装压缩包。

然后进入安装包所在的目录执行以下命令:

>tar xfz wiringPi-98bcb20.tar.gz   //98bcb20为版本标号,可能不同
>cd wiringPi-98bcb20
>./build

验证 wiringPi 库是否安装成功在终端中 输入 gpio -v 如果有输出信息就安装成功,如果提示指令不认识就安装失败。

二、查看引脚表格

在控制台输入以下命令:

gpio readall

会出现以下表格:
在这里插入图片描述

三、wiringPi 库 API

硬件初始化函数

int wiringPiSetup(void) 返回值:执行状态,失败返回 -1 当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。
引脚标号是 1-16 需要 root 权限
int wiringPiSetupGpio(void) 返回值:执行状态,失败返回 -1 当使用这个函数初始化树莓派引脚时,程序使用的是 BCM GPIO引脚编号表。
需要 root 权限

通用 gpio 控制函数(常用)

void pinMode(int pin,int mode) pin :指定的引脚
mode :指定引脚的 io 模式
可取的值:INPUT、OUTPUT、
PWM_OUTPUT、GPIO_CLOCK
作用:配置引脚的 IO 模式
注意:只有 wiringPi 引脚下的 1 脚(BCM下 的18脚)支持PWM输出
只有wiringPi 引脚下的 7 脚(BCM 下的 4 脚)支持GPIO_CLOCK输出
int digitalWrite(int pin,int value) pin :指定的引脚
value:引脚输出的电平值
可取的值:HIGH、LOW分别代表
高电平低电平
让一个已经配置为输出模式的引脚,输出指定的电平
int digitalRead (int pin) pin:读取的引脚
返回:引脚上的电平,可以是LOW HIGH 之一
读取一个引脚的电平值 LOW HIGH ,返回

时间控制函数

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分钟

串口通信

使用时需要包含头文件:#include <wiringSerial.h>

int serialOpen(char *device, int baud)device:串口的地址,在 Linux 中就是设备所在目录
默认一般是"/dev/ttyAMA0",我的是这样的。
baud:波特率 返回:正常返回文件描述符,失败返回-1
打开并初始串口
int serialOpen(char *device, int baud)device:串口的地址,在 Linux 中就是设备所在目录
默认一般是"/dev/ttyAMA0",我的是这样的。
baud:波特率 返回:正常返回文件描述符,失败返回-1
打开并初始串口
void serialClose (int fd)fd:文件描述符 关闭fd关联的串口
void serialPutchar (int fd, unsigned char c)fd:文件描述符
c:要发送的数据
发送一个字节数据到串口
void serialPuts (int fd, char *s)fd:文件描述符
s:发送的字符串,字符串以'\0'结尾
发送一个字符串数据到串口
int serialDataAvail(int fd) fd:文件描述符
返回:串口缓存中已经接收到的,可读取的字节数,-1 代表错误
获取串口缓存中可用的字节数
int serialGetchar(int fd) fd:文件描述符
返回:读取到的字符
从串口读取一个字节数据返回。
如果串口缓存中没有可用的数据,会等待10s ,如果10s后还是没有,则返回-1
所以,读取前,最好通过serialDataAvail 判断一下
*size_t read(int fd,void * buf ,size_t count); fd:文件描述符
buf:接收数据缓存的数组
count:接收的字节数
返回值:实际读取的字节数
这是Linux 下标准IO口函数,需要包含头文件 #include <unistd.h>
当要接收的数据量大的时候wiringPi 建议用这个函数

Linux有个特性:一切皆文件,设备虽然是硬件,但在Linux中还是以未见形式存在(在根目录的 /dev 目录下)。例如:fb0(from bufer0)显示器、mem(memory内存)、ram(磁盘)、tty(例如secureCRT这个终端就是一个tty)

在这里插入图片描述
初次使用树莓派串口编程,需要配置。我开始搞了很久,以为是程序写错了 还一直在调试。。
这个过程就是配置串口让串口来用做通信

/* 修改 cmdline.txt文件 */
>cd /boot/
>sudo vim cmdline.txt
删除【】之间的部分
dwc_otg.lpm_enable=0 【console=ttyAMA0,115200】 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait/*修改 inittab文件 */
>cd /etc/
>sudo vim inittab注释掉最后一行内容:,在前面加上 # 号
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100sudo reboot 重启

!!!一定记得重启


http://chatgpt.dhexx.cn/article/9BIdBq4E.shtml

相关文章

WiringPi安装及使用详解

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

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

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

如何在Hexo博客发布文章

1、markdown格式上传&#xff1a;Hexo默认使用的格式是markdown格式的文件&#xff0c;所以上传markdown文件可以自动转化为HTML格式的文章&#xff1b; 2、将.md文件复制到你hexo博客文件夹 中 source 下的 _posts 中&#xff0c;默认只有一个 hello-world.md&#xff1b; 3、…

微信公众号申请及文章发送详细流程介绍

文章目录 准备工作一、注册订阅号1.打开微信公众平台网址2.点击右上角立即注册&#xff0c;选择订阅号3.填写信息 二、登录微信公众号发表文章1.登录刚注册的公众号2.选择发表文章类型发表文章3.编辑好文章后可以选择阅览查看内容 三、管理微信公众号1.设置自己公众号内容2.管理…

使用wxjava实现发表内容、预览信息以及推送文章

大家好,我是雄雄。 文章目录 前言保存草稿的方法获取草稿箱列表根据media_id获取草稿箱信息给指定人发送预览文章推送文章(按照标签推送)前言 今天分享的内容有如下几个: 保存草稿根绝media_id会哦去草稿箱的信息发表内容,并不是发发布(已发表的内容不会推送给用户,不占…

CSDN 文章审核中的有趣现象

简 介&#xff1a; 对于今天CSDN记录实验博文在审核过程中遇到的“审核未通过”进行查询&#xff0c;通过“二分法” 逐步定位到影响审核通过的具体词语&#xff0c;经过修改之后&#xff0c;便完成了 CSDN 中的文章审核。莫名其妙的审核不通过&#xff0c;来自于输入文字中的 …

csdn发布不了文章的解决

插件的问题 问题 csdn发布不了文章&#xff0c;点击“发布后”&#xff0c;没有任何反应&#xff1b;编辑框也出现了莫名其妙的框图&#xff08;附图1&#xff09; 本以为是csdn在更新&#xff0c;经咨询客服4006600108&#xff08;可能是浏览器插件或者缓存的问题&#xff0…

在CSDN写文章是一种什么体验?

大家好&#xff0c;我是记得诚。 不知不觉&#xff0c;距离我第一篇博客&#xff0c;已快三年了&#xff0c;时间过得真快。 今天简单写一篇文章&#xff0c;记录自己在CSDN的成长进步。 开始 写博客是受杨秀章老师的启发&#xff0c;看到他充满烟火气的文字&#xff0c;给…

27.blog前端-发布文章

点击写文章&#xff0c;会跳转到该页面 点击右上角的发布&#xff0c;会弹出发布的对话框因此&#xff0c;我们要调用文章分类列表和文章标签列表的接口 以及如果是点击文字的编辑按钮进入该页面的话&#xff0c;还需要通过调用文章id获取文章详情的接口 还需要调用发布文章的…

Python爬取网上文章并发表到微信公众号

前言 话说懒惰是人类进步的原动力&#xff0c;古人诚不欺我。最近在折腾一个微信公众号&#xff0c;开始的时候在网上找一些资源然后进行二次创作然后发表到微信公众号&#xff0c;但是这就要自己先把里面的图片下载下来然后文字也复制过来然后再慢慢的上传到微信公众号&#…

如何用CSDN发布文章

CSDN怎么写博客&#xff1f; 1、首先打开CSDN官网&#xff0c;进行注册或者登录 2、登录后点击右上角的创作中心 3、进入以后点击左上角的发布 4、可以开始写入你要写的内容&#xff0c;先写入标题 5、然后再写你要写的内容&#xff0c;左侧写内容&#xff0c;右侧可以预览&a…

Hexo博客发表文章、草稿、添加分类和标签

写在前面 本文主要写了hexo的配置&#xff0c;关于博客标题这些配置HEXO已经有了很详细的介绍了&#xff0c;这里不再赘述&#xff0c;本文主要记录一些我个人认为小白比较容易有疑问的地方&#xff0c;也就是博客的主要功能&#xff0c;发表文章、添加文章分类和标签。文章可…

Springboot+Vue实现发表文章功能

点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] 效果图 前端编辑页面 文章列表页面 文章详情页面 环境介绍 JDK&#xff1a;1.8 数据库&#xff1a;Mysql5.6 前端&#xff1a;Vue 后端&#xff1a;SpringBoot 核心代码介绍 AtricleCtrle.class RestController RequestMa…

使用hexo发布文章

前言: 如何用指令去创建一篇文章,然后发布? .我们先来看一下hexo的目录结构,了解每个目录的作用,这将让我们对hexo的运行原理有一个大概的认识,对于我们后面美化主题是有帮助的, 然后再来创建文章,并发布到本地服务器,最后查看效果. 一、Hexo的目录分析: &#xff11;&#…

微信公众号发布

微信公众号如何发文章 输入微信公众号 打开百度浏览器&#xff0c;搜索栏输入微信公众号&#xff0c;点击百度一下。 打开微信公众平台 页面显示搜索结果&#xff0c;页面选择微信公众平台官方链接点击打开。 扫一扫二维码 进入微信公众平台页面&#xff0c;使用你的微信扫一扫…

软件测试培训:等价类划分法概述

等价类划分法是一种常用的黑盒测试方法&#xff0c;它主张从大量数据中选择一部分数据用于测试&#xff0c;即尽可能使用最少的测试用例覆盖最多的数据&#xff0c;以发现更多的软件缺陷。 一个程序可以有多个输入&#xff0c;等价类划分就是将这些数据按照输入需求进行分类&am…

等价类划分法+边界值法

一、测试用例&#xff08;案例&#xff09; 1.1 定义&#xff1a; ​ 是在测试执行之前&#xff0c;由测试人员编写的指导测试过程的重要文档&#xff0c;主要包括&#xff1a;用例编号、测试目的、测试步骤&#xff08;用例描述&#xff09;&#xff0c;预期结果 1.2 介绍编…

什么是等价类划分法?

1.等价类划分法&#xff1f; 等价类划分是把所有可能输入的数据分为若干个区域&#xff0c;然后从每个区域中取少量有代表性的数据进行测试即可。 等价类 &#xff1a;何为等价类&#xff0c;某个输入域的集合&#xff0c;在这个集合中每个输入条件都是等效的。 2.分类 一般…

等价类划分法实验

一、使用等价类划分法分析三角形问题 要求一&#xff1a;需包含有效等价类及无效等价类划分表格 以及 测试用例表格 要求二&#xff1a;代码实现 实现 方式一&#xff1a;设计 三个输入框 一个判断按钮 点击按钮后显示结果 实现方式二&#xff1a;Java控制台进行测试判断【本实…

解决typora beta版本过期提示

现在beta版的typora打开都会有这个弹窗提示&#xff0c;想要把弹窗提示解决其实很简单&#xff0c;只要按照下面这个办法解决就可以了。 winr打开运行窗口&#xff0c;输入regedit&#xff0c;点确定打开注册表&#xff0c;依次展开计算机\HKEY_CURRENT_USER\SOFTWARE\Typora&…