Beaglebone Green同Beaglebone Back开发板一样,一共引出了92个引脚,其中只有65个GPIO口可通过配置使用,由于引脚具有“复用”的特性,大约每个引脚有8种工作模式(Beagle System Reference Manual)。默认情况下,设为Mode7。由于P8扩展部分的引脚功能相对简单,复用不多,故项目功能复杂时,最好选择P8上的GPIO口。
对GPIO口的操作,主要有三个步骤:选择具体GPIO口,配置其工作模式,编程实现功能控制
一、选择GPIO口
根据以下两表,确定使用那个GPIO口,该表也可以在BBB_SRM文件中找到。
二、 配置GPIO的工作模式
(1)工作模式
(2)终端控制GPIO
cd /sys/class/gpio
ls -la 显示默认使用的4个GPIO口,也就是板子上的4个小灯控制端口
echo xx > export 开启xx引脚 P8_12->GPIO1_12=>GPIOn_m=32n+m44
cd gpioxx 进入xx引脚目录,就可对其进行相应的操作
echo xx > unexport 关闭
三、编程实现功能控制
1 终端控制
1)方法一
设置方向direction为输出(in)或输入(out),如果为输出,则通过变量value控制其电平高低(0,1)
2)方法二
设置方向direction为low或high,控制其输出高电平或低电平
3)示例
(1)由上图可得P8_12可作为GPIO口,且它的地址为44
(2)生成对应引脚文件
echo 44 > /sys/class/gpio/export
(3)将一个二极管连接到P8_12口(长线对应为正),另一端接地。
(4)控制输出电平的大小
方法一:
echo high > /sys/class/gpio/gpio44/direction
echo low > /sys/class/gpio/gpio44/direction
方法二:
echo out > /sys/class/gpio/gpio44/direction
echo 1 > /sys/class/gpio/gpio44/value
echo 0 > /sys/class/gpio/gpio44/value
(5)效果
2 C/C++语言实现,终端使用vi或nano编辑器,编写控制代码,实现P8_12引脚闪烁10次
//gpio812.cpp
#include
#include
#define GPIO_DIR "/sys/class/gpio/"
main()
{
FILE *stream=NULL;
FILE *stream1=NULL;
int i=0;
stream=fopen(GPIO_DIR"gpio44/direction","r+");
if (stream==NULL) /*打开P8.12端口*/
{
stream=fopen(GPIO_DIR"export","w");
fwrite("44",sizeof(int),2,stream);
fclose(stream);
stream=fopen(GPIO_DIR"gpio44/direction","r+");
}
fwrite("out",sizeof(char),3,stream); /* P8.12端口为输出*/
fclose(stream);
for (i=0;i<10;i++) /*10次闪亮*/
{
stream=fopen(GPIO_DIR"gpio44/value","r+"); /* P8.12端口输出1*/
fwrite("1",sizeof(char),1,stream);
fclose(stream);
sleep(1);
stream=fopen(GPIO_DIR"gpio44/value","r+"); /* P8.12端口输出0*/
fwrite("0",sizeof(char),1,stream);
fclose(stream);
sleep(1);
}
stream=fopen(GPIO_DIR"gpio44/value","r+"); /* P8.12端口输出0*/
fwrite("0",sizeof(char),1,stream);
fclose(stream);
stream=fopen(GPIO_DIR"unexport","w"); /*关闭端口*/
fwrite("44",sizeof(int),2,stream);
fclose(stream);
}
3 编译执行
4 效果
关注微信公众号【口袋物联】,微信号为koudaiwulian,更多物联网知识等着你
BeagleBone Green开发板试用帖汇总
|