WiringLMK

From BananaPro/Pi
Revision as of 21:06, 6 December 2015 by Super (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Other languages:
English • ‎中文(简体)‎

WiringLMK介绍

WiringLMK是为Banana Pro和LeMaker Guitar用C语言写的一个访问GPIO库。它是在用于树莓派的BCM2835上由Drogon [1]创建的WiringPi的基础上修改过来的。LeMaker团队对这个库进行了修改,使WiringLMK与原生的wiringPi有相同的接口。


支持的硬件

  • LeMaker Guitar Base Board Rev.B
  • LeMaker Banana Pro/Banana Pi

以下是一些有用的相关信息:
LeMaker Guitar:Pin Definition on Base Board
BananaPro/Pi:Pin definition


安装

使用下面的命令安装WiringLMK:

$ git clone https://github.com/LeMaker/WiringLMK.git 
$ cd WiringLMK
$ chmod +x ./build
$ sudo ./build


支持的API接口

设置

这里我们介绍四种初始化wiringLMK引脚模式的设置函数,下面这些设置函数的其中一个必须在WiringLMK程序的一开始就被调用,用于初始化。

int wiringPiSetup (void) ;
int wiringPiSetupGpio (void) ;
int wiringPiSetupPhys (void) ;
int wiringPiSetupSys (void) ;

int wiringPiSetupPhys (void) ; 与物理管脚号一致;int wiringPiSetupGpio (void) ;int wiringPiSetupSys (void) ; 就是树莓派上Broadcom GPIO管脚号(GPIO.BCM)。我们可以从这张表#附录:WiringLMK管脚设置表查看不同的地方。

管脚操作

WiringLMK库核心函数可以在SBC上直接操作,且使用下面的这些基本操作支持外接设备:

void pinMode (int pin, int mode) ;
  • int mode设置引脚模式为INPUTOUTPUTPWM_OUTPUT (仅PWM输出管脚)或GPIO_CLOCK (仅CLK输出管脚).
void pullUpDnControl (int pin, int pud) ;
  • 当管脚设置为输入,它可以被设置为拉低或拉高寄存器模式。参数int pud应该是PUD_OFF (非拉高/低)、PUD_DOWN (接地)或PUD_UP (拉高到VCC 3.3V).
void digitalWrite (int pin, int value) ;
  • 当管脚设置为输出,这个函数写入值HIGHLOW (10)到管脚。
int digitalRead (int pin) ;
  • 获取管脚当前的电平值,这个函数可以读取管脚的值 HIGHLOW (10).
analogRead (int pin) ;
  • 管脚能够配置附加的模拟模块,这个函数可读取并返回模拟信号输入值。
analogWrite (int pin, int value) ;
  • T管脚能够配置附加的模拟模块,这个函数可写入模拟信号输入值。
int wiringPiISR (int pin, int edge, void (*function)(void)) ;
  • 中断功能能够被指定,int edge 可以设置为INT_EDGE_RISINGINT_EDGE_FALLINGINT_EDGE_BOTH。第三个函数是中断处理函数。
void pwmWrite (int pin, int value) ;
  • 对于PWM输出管脚,可以对写入值到PWM管脚寄存器。这里指的是物理PWM,不是软件PWM。
int softPwmCreate (int pin, int initialValue, int pwmRange) ;
  • 这个函数创建了一个软件控制的PWM,建议设置第二个参数int pwmRange为100。0表示关闭,100表示完全打开。
void softPwmWrite (int pin, int value) ;
  • 已初始化的软PWM可以用这个函数更新管脚(int value)值。


编译

在使用WiringLMK GPIO库前面,必须在程序中添加头文件#include <wiringPi.h>。根据具体使用的模块,你可能也必须添加其它的#include头文件,使用WiringLMK编译一个程序例子, 你必须添加库文件链接路径

 -I/usr/local/include -L/usr/local/lib -lwiringPi

根据不同的运行环境,你也许需要查看这些重要的参数: -lwiringPi-lwiringPiDev-lpthread


一个简单的例子

一个“Hello World”例子,展示使用LED灯闪烁。

#include <wiringPi.h>
int main (void)
{
  wiringPiSetupPhys () ;
  pinMode (11, OUTPUT) ;
  for (;;)
  {
    digitalWrite (11, HIGH) ; delay (500) ;
    digitalWrite (11,  LOW) ; delay (500) ;
  }
  return 0 ;
}


另请参阅

操控SBC上的IO接口


附录:WiringLMK管脚设置表

Banana Pro和LeMaker Guitar 40Pin GPIO映射表
物理编号 WiringLMK设置函数
wiringPiSetupPhys() wiringPiSetup() wiringPiSetupGpio() wiringPiSetupSys()
1 -- -- --
2 -- -- --
3 8 2 2
4 -- -- --
5 9 3 3
6 -- -- --
7 7 4 4
8 15 14 14
9 -- -- --
10 16 15 15
11 0 17 17
12 1 18 18
13 2 27 27
14 -- -- --
15 3 22 22
16 4 23 23
17 -- -- --
18 5 24 24
19 12 10 10
20 -- -- --
21 13 9 9
22 6 25 25
23 14 11 11
24 10 8 8
25 -- -- --
26 11 7 7
27 30 0 0
28 31 1 1
29 21 5 5
30 -- -- --
31 22 6 6
32 26 12 12
33 23 13 13
34 -- -- --
35 24 19 19
36 27 16 16
37 25 26 26
38 28 20 20
39 -- -- --
40 29 21 21