树莓派WiringPi库总结

简介: 树莓派WiringPi库总结

1.WiringPi库介绍

(1)Wiringpi是一个很棒的树莓派IO控制库,提供了丰富的接口:GPIO控制,中断,多线程等等,java的pi4j项目也是基于wiringpi


(2)在使用wiringPi库时,你需要包含头文件 #include<wiringPi.h>。凡是写wiringPi的程序,都包含这个头文件。


2.WiringPi库安装编译和运行

(1)安装


  进入wiringPi的官网下载安装包


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


  tar xfz wiringpixxx.tar.gz


  cd wiringpixxx


  /build


 验证wiringPi是否安装成功,输入gpio-v,会在终端中输出wiringpi的信息,否则安装失败


(2)编译和运行


编译: gcc xxx.c ‐o xxx ‐lwiringpi


运行: sudo ./xxx


3.硬件初始化函数

使用wiringpi时,必须在执行任何操作前初始化树莓派,否则程序不能正常工作


可以调用下表函数之一进行初始化,它们都会返回一个int,返回-1表示初始化失败。

int wiringPiSetup (void) 返回:执行状态,-1表示失败

当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi 引脚编号表。引脚的编号为 0~16

需要root权限

int wiringPiSetupGpio (void) 返回执行状态,-1表示失败

当使用这个函数初始化树莓派引脚时,程序中使用的是BCM GPIO 引脚编号表。

需要root权限

wiringPiSetupPhys(void)  不常用,不做介绍  /
wiringPiSetupSys (void) ;  不常用,不做介绍  /


4. 通用GPIO控制函数

image.png

5.时间控制函数

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


6.中断

wiringPi提供了一个中断处理注册函数,它只是一个注册函数,并不处理中断。他无需root权限。

image.png

7.softPwm,软件实现的PWM

树莓派硬件上支持的PWM输出的引脚有限,为了突破这个限制,wiringPi提供了软件实现的PWM输出API。

需要包含头文件:#include <softPwm.h>

编译时需要添pthread库链接  -lpthread image.png

8.串口通信

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

image.png

参考大佬lulipro - 博客园




相关文章
|
监控 前端开发
STM32F103标准外设库——RCC时钟(六)
STM32F103标准外设库——RCC时钟(六)
1523 0
STM32F103标准外设库——RCC时钟(六)
|
网络协议 Unix Linux
OpenOCD(五):调试适配器配置
OpenOCD(五):调试适配器配置
1106 0
|
Unix Linux 编译器
【Linux】使用gcc调试程序
【Linux】使用gcc调试程序
306 0
|
Ubuntu JavaScript 关系型数据库
我与PostmarketOS相遇
PostmarketOS 系统 手机改造
1780 0
我与PostmarketOS相遇
|
9月前
|
消息中间件 XML 前端开发
springBoot集成websocket实时消息推送
本文介绍了如何在Spring Boot项目中集成WebSocket实现实时消息推送。首先,通过引入`spring-boot-starter-websocket`依赖,配置`WebSocketConfig`类来启用WebSocket支持。接着,创建`WebSocketTest`服务器类,处理连接、消息收发及错误等事件,并使用`ConcurrentHashMap`管理用户连接。最后,前端通过JavaScript建立WebSocket连接,监听消息并进行相应处理。此方案适用于需要实时通信的应用场景,如聊天室、通知系统等。
1289 2
|
7月前
|
Ubuntu Linux
Ubuntu中dpkg和apt命令:debian包安装详解
希望这让你对于Ubuntu中的dpkg和apt命令有了更为清晰的理解。下次你面对软件包安装的问题,就可以轻松应对,优雅地在你的Linux系统中游刃有余了。
686 10
|
12月前
|
传感器 存储 网络协议
Arduino 中的常见的库
Arduino 中的常见库包括:Wire(I2C通信)、SPI(串行外设接口)、Servo(伺服电机控制)、EEPROM(数据存储)、LiquidCrystal(液晶显示)等,这些库简化了硬件编程,提高了开发效率。
1186 3
|
编解码 数据可视化 数据挖掘
matplotlib绘制三维曲面图时遇到的问题及解决方法
本文详细介绍了在使用Matplotlib绘制三维曲面图时可能遇到的问题及其解决方法。从数据维度匹配到颜色映射,从图形显示到保存,涵盖了常见的各种情况。通过正确处理这些问题,可以确保生成高质量的三维可视化图形,为数据分析和展示提供有力支持。希望本文对您在使用Matplotlib进行三维绘图时有所帮助。
461 0
|
Ubuntu
在树莓派4B上安装ubuntu系统
在树莓派4B上安装ubuntu系统
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
929 0