精华内容
下载资源
问答
  • WiringPi support

    2020-12-26 08:12:30
    <div><p>Hi, i would like to use Bounce2 with WiringPi. Bounce2 is located in my include directory. Im sure id made something really stupid. <p>Id got the error: <pre><code> undefined reference to '...
  • <p>Will you continue to support <a href="https://github.com/WiringPi/WiringPi/">WiringPi/WiringPi</a> and <a href="https://github.com/WiringPi/WiringPi-Python/">WiringPi/WiringPi-Python</a>?...
  • WiringPi Deprecated

    2020-12-06 06:02:36
    <div><p>Looks like the maintainer of WiringPi got fed up with dealing with jerks and is going to stop maintaining it: http://wiringpi.com/wiringpi-deprecated/</p> <p>Is there any plan yet for dealing ...
  • WiringPi.rar

    2020-08-09 14:31:00
    WiringPi库代码资源,wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等。java 的pi4j项目也是基于wiringPi
  • wiringPi.tar

    2020-07-05 20:55:32
    因为wiringPi官方停止了对wiringPi源码的下载支持,为了方便国内树莓派开发者,提供这个下载资源
  • wiringPI

    2021-02-19 11:56:19
    在使用wiringPi库时,你需要包含头文件 #include<wiringPi.h>。凡是写wiringPi的程序,都包含这个头文件。 硬件初始化函数 使用wiringPi时,你必须在执行任何操作前初始化树莓派,否则程序不能正常工作。 可以...

    转载出处:http://www.cnblogs.com/lulipro/

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

    硬件初始化函数

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

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

     

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

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

    需要root权限

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

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

    需要root权限

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

    通用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输出

    void digitalWrite (int pin, int value)

    pin:控制的引脚

    value:引脚输出的电平值。

     可取的值:HIGH,LOW分别代表高低电平

    让对一个已近配置为输出模式的 引脚  输出指定的电平信号
    int digitalRead (int pin)

    pin:读取的引脚

    返回:引脚上的电平,可以是LOW HIGH 之一

    读取一个引脚的电平值  LOW  HIGH ,返回
    void analogWrite(int pin, int value)

    pin:引脚

    value:输出的模拟量

    模拟量输出

    树莓派的引脚本身是不支持AD转换的,也就是不能使用模拟量的API,

    需要增加另外的模块

    int analogRead (int pin)

    pin:引脚

    返回:引脚上读取的模拟量

    模拟量输入

    树莓派的引脚本身是不支持AD转换的,也就是不能使用模拟量的API,

    需要增加另外的模块

    void pwmWrite (int pin, int value)

    pin:引脚

    value:写入到PWM寄存器的值,范围在0~1024之间。

    输出一个值到PWM寄存器,控制PWM输出。
    pin只能是wiringPi 引脚编号下的1脚(BCM下的18脚)

    void pullUpDnControl (int pin, int pud)

     pin:引脚

    pud:拉电阻模式

    可取的值:PUD_OFF        不启用任何拉电阻。关闭拉电阻。
                 PUD_DOWN    启用下拉电阻,引脚电平拉到GND
                 PUD_UP         启用上拉电阻,引脚电平拉到3.3v

    对一个设置IO模式为 INPUT 的输入引脚设置拉电阻模式。

    与Arduino不同的是,树莓派支持的拉电阻模式更丰富。

    树莓派内部的拉电阻达50K欧姆

    时间控制函数

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

    中断

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

     

    int wiringPiISR (int pin, int edgeType,  void (*function)(void))

    返回值:返回负数则代表注册失败

    pin:接受中断信号的引脚

    edgeType:触发的方式。

     INT_EDGE_FALLING:下降沿触发
     INT_EDGE_RISING:上升沿触发
     INT_EDGE_BOTH :上下降都会触发
     INT_EDGE_SETUP:编程时用不到。       

        

    function:中断处理函数的指针,它是一个无返回值,无参数的函数。

    注册的函数会在中断发生时执行

    和51单片机不同的是:这个注册的中断处理函数会和main函数并发执行(同时执行,谁也不耽误谁)

    当本次中断函数还未执行完毕,这个时候树莓派又触发了一个中断,那么这个后来的中断不会被丢弃,它仍然可以被执行。但是wiringPi最多可以跟踪并记录后来的仅仅1个中断,如果不止1个,则他们会被忽略,得不到执行。

    多线程

    wiringPi提供了简单的Linux系统下的通用的 Posix threads线程库接口来支持并发。

     

    int piThreadCreate(name)

    name:被包装的线程执行函数

    返回:状态码。返回0表示成功启动,反之失败。

    源代码:
    int piThreadCreate (void *(*fn)(void *))
    {
      pthread_t myThread ;

      return pthread_create (&myThread, NULL, fn, NULL) ;
    }

    包装一个用PI_THEEAD定义的函数为一个线程,并启动这个线程。

    首先你需要通过以下方式创建一个特特殊的函数,这个函数中的代码就是在新的线程中将执行的代码。,myTread是你自己线程的名字,可自定义。

    
    PI_THREAD (myThread)
    {
       //在这里面写上的代码会和主线程并发执行。
    }

    在wiringPi.h中,我发现这样一个宏定义:#define PI_THREAD(X) void *X (void *dummy)
    那么,被预处理后我们写的线程函数会变成下面这个样子,请注意返回值,难怪我每次写都会警告,因为没有返回一个指针,
    那么,以后注意返回NULL,或者 (void*)0
    void *myThread (void *dummy)
    {
     //在这里面写上的代码会和主线程并发执行。
    }


    piLock(int keyNum) keyNum:0-3的值,每一个值代表一把锁

    使能同步锁。wiringPi只提供了4把锁,也就是keyNum只能取0~3的值,官方认为有这4把锁就够了。

    keyNum:0,1,2,3 每一个数字就代表一把锁。

    源代码:

    void piLock (int keyNum)
    {
      pthread_mutex_lock (&piMutexes [keyNum]) ;
    }

    piUnlock(int keyNum) keyNum:0-3的值,每一个值代表一把锁

    解锁,或者说让出锁。

    源代码:

    void piUnlock (int key)
    {
      pthread_mutex_unlock (&piMutexes [key]) ;
    }

    piUnlock(int keyNum) keyNum:0-3的值,每一个值代表一把锁

    解锁,或者说让出锁。

    源代码:

    void piUnlock (int key)
    {
      pthread_mutex_unlock (&piMutexes [key]) ;
    }

    int piHiPri (int priority)

    priority:优先级指数,0~99

    返回值:0,成功

             -1:,失败

    设定线程的优先级,设定线程的优先级变高,不会使程序运行加快,但会使这个线程获得相当更多的时间片。priority是相对的。比如你的程序只用到了主线程,

    和另一个线程A,主线程设定优先级为1,A线程设定为2,那也代表A比main线程优先级高。

            凡是涉及到多线程编程,就会涉及到线程安全的问题,多线程访问同一个数据,需要使用同步锁来保障数据操作正确性和符合预期。
            当A线程锁上 锁S 后,其他共用这个锁的竞争线程,只能等到锁被释放,才能继续执行。
            成功执行了piLock 函数的线程将拥有这把锁。其他线程想要拥有这把锁必须等到这个线程释放锁,也就是这个线程执行piUnlock后。
            同时要扩展的知识是:volatile 这个C/C++中的关键字,它请求编译器不缓存这个变量的数据,而是每次都从内存中读取。特别是在多线程下共享放变量,必须使用volatile关键字声明才是保险的。

    softPwm,软件实现的PWM

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

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

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

     

    int softPwmCreate (int pin, int initialValue, int pwmRange)

    pin:用来作为软件PWM输出的引脚

    initalValue:引脚输出的初始值

    pwmRange:PWM值的范围上限

    建议使用100.

    返回:0表示成功。

    使用一个指定的pin引脚创建一个模拟的PWM输出引脚
    void softPwmWrite (int pin, int value)

    pin:通过softPwmCreate创建的引脚

    value:PWM引脚输出的值

    更新引脚输出的PWM值

     

    串口通信

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

    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'结尾

    发送一个字符串到串口
    void  serialPrintf (int fd, char *message, …)

    fd:文件描述符

    message:格式化的字符串

    像使用C语言中的printf一样发送数据到串口
    int   serialDataAvail (int fd)

    fd:文件描述符

    返回:串口缓存中已经接收的,可读取的字节数,-1代表错误

     获取串口缓存中可用的字节数。
    int serialGetchar (int fd)

    fd:文件描述符

    返回:读取到的字符

    从串口读取一个字节数据返回。

    如果串口缓存中没有可用的数据,则会等待10秒,如果10后还有没,返回-1

    所以,在读取前,做好通过serialDataAvail判断下。

    void serialFlush (int fd)

    fd:文件描述符

    刷新,清空串口缓冲中的所有可用的数据。

    *size_t write (int fd,const void * buf,size_t count)

    fd:文件描述符

    buf:需要发送的数据缓存数组

    count:发送buf中的前count个字节数据

    返回:实际写入的字符数,错误返回-1

    这个是Linux下的标准IO库函数,需要包含头文件#include <unistd.h>

    当要发送到的数据量过大时,wiringPi建议使用这个函数。

    *size_t read(int fd,void * buf ,size_t count);

    fd:文件描述符

    buf:接受的数据缓存的数组

    count:接收的字节数.

    返回:实际读取的字符数。

    这个是Linux下的标准IO库函数,需要包含头文件#include <unistd.h>

    当要接收的数据量过大时,wiringPi建议使用这个函数。

    shift移位寄存器芯片API

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

    void shiftOut (uint8_t dPin, uint8_t cPin, uint8_t order, uint8_t val)

    dPin:移位芯片的串行数据入口引脚,比如74HC595的SER脚

    cPin:移位芯片的时钟引脚。如74HC595的11脚

    order:

       LSBFIRST 先发送数据的低位

       MSBFIRST先发送数据的高位

         

    val:要发送的8位数据

    将val串化,通过芯片转化为并行输出

    如常见的74HC595

     uint8_t shiftIn (uint8_t dPin, uint8_t cPin, uint8_t order)

    同上。  

    将并行数据,通过芯片转化为串行输出。

    树莓派硬件平台特有的API

    并没有列全,我只是列出了相对来说有用的,其他的,都基本不会用到。

    pwmSetMode (int mode)

    mode:PWM运行模式

    设置PWM的运行模式。

    pwm发生器可以运行在2种模式下,通过参数指定:
         PWM_MODE_BAL   :树莓派默认的PWM模式
         PWM_MODE_MS    :传统的pwm模式,

    pwmSetRange (unsigned int range)

    range,范围的最大值

    0~range

    设置pwm发生器的数值范围,默认是1024
    pwmSetClock (int divisor)   This sets the divisor for the PWM clock.
    To understand more about the PWM system, you’ll need to read the Broadcom ARM peripherals manual.
    piBoardRev (void)

    返回:树莓派板子的版本编号

    1或者2

    /
    展开全文
  • WiringPi.zip

    2020-08-28 12:57:02
    树莓派缺少wiringPi的人可以下载,安装教程,请自行寻找,一般是安装软件的教程即可。 纯小白,而且没有耐心的,请绕行,因为此种安装方法,对于小白,很难,涉及诸多指令。
  • wiringpi用户手册

    2018-08-23 17:09:52
    wiringpi用户手册,版本0.0.1。英文不好的可以看看中文的。这个文档还可以。
  • wiringPi其实和BCM2835 library类似,也是通过memmap, IOmap来实现在用户空间直接操作底层寄存器wiringPihttp://wiringpi.com/WiringPiis aPINbased GPIO access library written in C for the BCM2835, BCM2836 and...

    wiringPi其实和BCM2835 library类似,也是通过memmap, IOmap来实现在用户空间直接操作底层寄存器

    wiringPi

    http://wiringpi.com/WiringPiis aPINbased GPIO access library written in C for the BCM2835, BCM2836 and BCM2837 SoC devices used in allRaspberry Pi.versions.

    在之前编译的系统中wiringPi已经预装了, gpio readall可以读出gpiopi@raspberrypi:~ $ gpio readall

    +-----+-----+---------+------+---+---Pi 3---+---+------+---------+-----+-----+

    | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM |

    +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+

    | | | 3.3v | | | 1 || 2 | | | 5v | | |

    | 2 | 8 | SDA.1 | ALT0 | 1 | 3 || 4 | | | 5v | | |

    | 3 | 9 | SCL.1 | ALT0 | 1 | 5 || 6 | | | 0v | | |

    | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT5 | TxD | 15 | 14 |

    | | | 0v | | | 9 || 10 | 1 | ALT5 | RxD | 16 | 15 |

    | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 1 | 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 3---+---+------+---------+-----+-----+

    gpio在/usr/bin下pi@raspberrypi:~ $ whatis gpio

    gpio (1) - Command-line access to Raspberry Pi's GPIO

    pi@raspberrypi:~ $ whereis gpio

    gpio: /usr/bin/gpio /usr/share/man/man1/gpio.1

    查看lib, include, 已经安装好了pi@raspberrypi:/usr/lib $ ls |grep wiringPi

    libwiringPiDev.so

    libwiringPiDev.so.2.44

    libwiringPi.so

    libwiringPi.so.2.44pi@raspberrypi:/usr/include $ ls | grep wiringPi

    wiringPi.h

    wiringPiI2C.h

    wiringPiSPI.h

    将led.c copy到树莓派,编译,生成led, 执行,闪灯#include

    char LED = 25;

    int main(void)

    {

    if(wiringPiSetup() < 0)return 1;

    pinMode (LED,OUTPUT) ;

    while(1)

    {

    digitalWrite(LED, 1) ;

    delay (200);

    digitalWrite(LED, 0) ;

    delay (200);

    }

    }

    makefileled:led.c

    gcc -Wall led.c -o led -lwiringPi

    gcc -Wall pwm.c -o pwm -lwiringPi

    clean:

    rm led pwm

    展开全文
  • alternatives for wiringPi

    2020-12-09 05:23:25
    <div><p>git.drogon.net is temporarily... Please look for alternatives for wiringPi, etc. -Gordon http://wiringpi.com/wiringpi-deprecated/</p><p>该提问来源于开源项目:Manuel83/craftbeerpi3</p></div>
  • wiringPi安装

    2017-02-17 16:03:00
    wiringPi安装 更新软件,输入以下指令: sudo apt-get update sudo apt-get upgrade 通过GIT获得wiringPi的源代码 git clone git://git.drogon.net/wiringPi 若需要更新wiringPi。 cd wiringPi...

    wiringPi安装

     
    更新软件,输入以下指令:
     
    sudo apt-get update
     
    sudo apt-get upgrade
     
    通过GIT获得wiringPi的源代码
     
    git clone git://git.drogon.net/wiringPi
     
    若需要更新wiringPi。
     
    cd wiringPi
     
    git pull origin
     
    进入wiringPi目录并安装wiringPi
     
    cd wiringPi
     
    ./buil
     
    安装wiringpi就到这里了,科科
     

     

    转载于:https://www.cnblogs.com/smartkeke/p/6820447.html

    展开全文
  • wiringPi_v2.3.1.rar

    2019-10-14 19:48:32
    树莓派wiringPi压缩包 树莓派wiringPi压缩包 树莓派wiringPi压缩包 树莓派wiringPi压缩包
  • wiringPi手册V001.pdf

    2020-12-26 09:21:15
    wiringPi手册V001.pdf
  • wiringpi-latest.deb

    2019-10-31 17:02:25
    树莓派4B需要新的版本WiringPi, 安装wiringPi连接失败解决方法
  • wiringPi用户手册.pdf

    2020-07-30 23:29:54
    树莓派c语言编程,控制引脚库wiringPi。详细介绍wiringPi的各个功能,是用树莓派c语言嵌入式开发的有利工具。
  • Added WiringPi package

    2020-12-26 07:37:26
    s wiringPiOcaml into ocal-wiringpi and would like to get this package into OPAM, so Raspberry Pi users can install it with ease.</p><p>该提问来源于开源项目:ocaml/opam-repository</p></div>
  • 树莓派 wiringPi

    2020-08-20 13:52:33
    wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等 检查树莓派是否安装 wiringPi,输入: gpio -v // 会在终端中输出相关 wiringPi 的信息,否则没有安装 使用 ...

    wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等
    检查树莓派是否安装 wiringPi,在树莓派终端输入:

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

    使用 gcc 编译器时需要添加库:

    gcc xxx.c -lwiringPi
    

    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.点击了解更多.

    展开全文
  • wiringpi-32.zip

    2021-02-18 10:44:28
    树莓派wiringPI库32位版,解压后,使用 sudo dpkg -i 安装deb包
  • WiringPi简介WiringPi是应用于树莓派平台的GPIO控制库函数,WiringPi遵守GUN Lv3。wiringPi使用C或者C++开发并且可以被其他语言包转用,例如python、ruby或者PHP等。WiringPi中的函数类似于Arduino的wiring系统,这...
  • wiringpi除了提供C语言接口之外,目前已经支持Python等语言的扩展。对于GPIO的操作非常强大。 源码地址:https://github.com/WiringPi/WiringPi-Python 安装pip: apt-get install python-pip 安装wiringpi: ...
  • 树莓派安装wiringPi

    2020-09-08 14:52:39
    在学习微雪的2-CH CAN FD HAT时,根据官网步骤在树莓派安装wiringPi sudo apt-get install wiringpi #对于树莓派4B可能需要进行升级: wget https://project-downloads.drogon.net/wiringpi-latest.deb(此链接安装...
  • 树莓派WiringPi

    2021-02-07 11:20:21
    目录1、查看WiringPi库是否安装2、API 1、查看WiringPi库是否安装 查看树莓派是否有WiringPi库 输入指令:gpio -v 输出下面代表有库,否则不认识指令 gpio version: 2.50 Copyright (c) 2012-2018 Gordon ...
  • 树莓派Wiringpi

    2020-12-26 13:36:19
    wiringPi是一个很棒的树莓派IO控制库,使用C语言开发,提供了丰富的接口:GPIO控制,中断,多线程,等等。 树莓派wiringPi库详解
  • Dependency with wiringpi

    2020-11-26 23:24:41
    <p><em>deconz depends on wiringpi; however: Package wiringpi is not installed.</em></p> <p>Of course the Cubox-i is not a Rpi and there is no GPIO on this board. So the dependency cannot be satisfied...
  • WiringPi has been deprecated

    2020-12-02 05:15:00
    0 clone --bare --mirror git://git.drogon.net/wiringPi /media/yocto/jenkins/jenkins-meta/jenkins-meta/workspace/a-gateway-os_feature_auto_deploy/build/downloads/git2/git.drogon.net.wiringPi --progress ...
  • cross compile WiringPi

    2021-01-02 10:34:51
    下面开始讲如何交叉编译动态库,使用的工具有centos7虚拟机、raspberrypi-tool、wiringPi源码、cmake。 版本情况: centos7.4 1708 raspberrypi-tool 下载地址https://github.com/raspberrypi/tools wiringPi ...
  • 使用WiringPi可以驱动树莓派硬件底层,包含GPIO,usb,uart

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,274
精华内容 509
关键字:

wiringpi