wringpi

WiringPi(树莓派库函数)

一、下载、安装、使用

  • 下载:使用git clone git://git.drogon.net/wiringPi下载wringPi
  • 安装 :cd wiringPi
    执行./build自动安装

如果想在PC上使用交叉编译的方式安装,可以将树莓派里面生成的 libwiringPiDev.so.2.25 和 libwiringPi.so.2.25 库拷贝到PC的库里面,然后创建软连接:
ln -s libwiringPi.so.2.25 libwiringPi.so
ln -s libwiringPiDev.so.2.25 libwiringPiDev.so
参考网页: 树莓派交叉编译环境构建(含 wiringPi)

wiringPi测试

gpio readall命令显示所有的引脚

如图所示:第一种为板上编号(37),即中间两列,表示第几号插针。第二中为wiringPi编码(25),使用wiringPi库编程时是用wiringPi编号,第三种为BCM编号,这个是更加BCM管脚来编号的,使用bcm2835库或python的RPi.GPIO编程时使用BCM编号ringPi API
参考网页:https://projects.drogon.net/raspberry-pi/wiringpi/functions/

  1. 包含头文件 #include < wiringPi.h>
    需要在makefile里面添加头文件地址和库的地址
    例如:-I/usr/local/include -L/usr/local/lib -lwiringPi

  2. 初始化wiringPi

    • wiringPiSetup(void);
      这个函数初始化wiringPi系统,它提供了将虚拟引脚编号0~16映射到实际的Broadcom GPIO引脚编号。

    • wiringPiSetupGpio(void)
      这个函数与上面的相同,但是它允许程序不重新映射直接使用Broadcom GPIO引脚编号

    • wiringPiSetupSys(void)
      以上两个函数只有root用户才能调用,本函数访问的不是直接的硬件而是/sys/class/gpio接口,这种模式引脚编号是原生的Broadcom GPIO引脚编号

  3. 读写函数

    • void pinMode (int pin, int mode) ;
      这个函数设置引脚的模式为INPUT、OUTPUT或者PWM_OUTPUT.注意仅仅wiringPi引脚1(BCM_GPIO 18)支持PWM输出,引脚编号

    • void digitalWrite (int pin, int value) ;
      向给出的引脚写HIGH或者LOW(1 or 0)值,并确保该引脚在之前已经被设置成输出模式。

    • void digitalWriteByte (int value) ;
      这个函数写8位字节到8个GPIO引脚,最快的方式是马上设置所有8位字节成一个特定的值,尽管它仍然需要对GPIO硬件进行了两次写操作。

    • void pwmWrite (int pin, int value) ;
      向给出引脚的PWM寄存器写value值,value的值必须在0~1024之间。这个函数在系统模式( Sys mode)下无效。

    • void digitalRead(int pin);
      这个函数返回读取pin引脚所获得的值,这个值将会是HIGH或者LOW(1 or 0)

    • void pullUpDnControl (int pin, int pud) ;
      这个函数将给出的引脚设置成上拉或者下拉电阻模式,引脚必须设置成输入模式。和Arduino不同,BCM2835同时有用上拉和下拉内部电阻器。pud参数应该是;PUD_OFF(没有上拉或下拉),PUD_DOWN(下拉),PUD_UP(上拉到3.3V)。这个函数在Sys模式下无效。

  4. PWM控制

    • pwmSetMode (int mode) ;
      pwm发生器可以产生两种模式– “balanced” and “mark:space”,通过参数:PWM_MODE_BAL or PWM_MODE_MS来切换这两种模式

    • pwmSetRange (unsigned int range) ;
      这个函数设置了PWM发生器的寄存器的范围,默认是1024。

    • pwmSetClock (int divisor) ;
      这个函数用于设置PWM时钟的分频数。

  5. 定时器函数

    • unsigned int millis (void);
      这个函数返回一个数据,这个数据代表了从你的程序调用wiringPiSetup函数开始到当前所经历的毫秒数,它返回一个32位无符号数。

    • void delay (unsigned int howLong)
      这个函数会导致程序执行暂停至少howLong毫秒,由于linux多任务的特性可能会更长。

    • void delayMicroseconds (unsigned int howLong)
      这个函数会导致程序执行暂停至少howLong微秒,由于linux多任务的特性可能会更长。

  6. 程序/线程优先级

    • int piHiPri (int priority) ;
  7. 中断

    • int wiringPiISR (int pin, int edgeType, void (*function)(void)) ;
      这个函数在特殊的引脚上注册一个函数来接收中断,edgeType参数是INT_EDGE_FALLING、INT_EDGE_RISING,INT_EDGE_BOTH or INT_EDGE_SETUP中的一个。如果它是INT_EDGE_SETUP,则不会有初始化引脚的操作发生-它假定你已经在别处设置了引(例如 使用gpio命令),但是如果你指定了其它类型中的一种,然后这个引脚就会按照规定被导出和初始化。它通过合适的调用gpio通用命令来实现,因此它应该被使用。waitForInterrupt()函数已经被弃用了,你应该使用下面这个更新更简单的wiringPiISR() 函数。
  8. 并行处理

    • int piThreadCreate (name) ;
    • piLock (int keyNum) ;
    • piUnlock (int keyNum) ;
  9. 混杂函数

    • piBoardRev (void) ;
    • wpiPinToGpio (int wPiPin) ;
    • setPadDrive (int group, int value) ;

三、软件PWM库

WiringPi提供了一套以软件的方式模拟PWM的函数,这些函数可以用在树莓派任意的GPIO上。

  • 包含头文件

    • #include < wiringPi.h>
    • #include < softPwm.h>
      编译的时候需要包含pthread和wiringPi库的路径
      例如:cc -o myprog myprog.c -lwiringPi -lpthread
  • int softPwmCreate (int pin, int initialValue, int pwmRange) ;

  • void softPwmWrite (int pin, int value) ;

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值