一、BlackLib库
曾几何,还在终端操作cape的工作状态;想当初,还在为编写cape的调用函数发愁,而Blacklib库的横空出世,几乎解决了大半的工作。Blacklib库使用功能强大的C++语言编写,主要为Bealgebone Black的特性写的。有读模块输入、生成pwm信号、使用gpio引脚、和其他设备通信用到的UART、SPI和I2C,除此之外,还具有debugging功能。当调用库中任何一个函数时,还可以检查错误,在最新的V3.0版本中,实现了并行编程,互斥操作,目录操作、时间操作等。
二、Blacklib类层次结构
核心层(Library Core)
该层做一些核心的工作,应用层不能访问,因为它是一个抽象类,除了析构函数和构造函数,所有的成员函数都是私有的(private)或保护的(protected)
中间层(Sub Level Cores)
该层定义了GPIO、ADC和PWM的特性,同时还可以派生出属于自己特性的类。
应用层(End Node Class)
该层主要和用户进行交互,可以读或设置或控制Beaglebone Black的ADC,GPIO及PWM。也封装了可以直接使用的UART、SPI和I2C接口。具体的接口API,可查看官网:http://blacklib.yigityuce.com/namespaceBlackLib.html
三、Blacklib库使用
1 下载官方库文件
2 进入第三版,查看例子examples.cpp,可见,官网为每个模块都写了相应的测试文件
#include "BlackLib.h"
#include "examples/example_GPIO.h"
#include "examples/example_ADC.h"
#include "examples/example_PWM.h"
#include "examples/example_SPI.h"
#include "examples/example_UART.h"
#include "examples/example_I2C.h"
#include "examples/example_directory.h"
#include "examples/example_threadAndMutex.h"
#include "examples/example_time.h"
int main()
{
example_GPIO();
example_ADC();
example_PWM();
example_SPI();
example_UART();
example_I2C();
example_directory();
example_threadAndMutex();
example_time();
return 0;
}
3 修改Makefile文件,指定交叉编译器,头文件目录和库文件目录为自己的交叉编译器
4 编译通过,说明可以进行下一步的实现
5 参考链接
1 http://beagleboard.org/project/blacklib/
2 https://github.com/yigityuce/BlackLib
|