查看: 328|回复: 2
打印 上一主题 下一主题

【Seeed开发板试用体验】应用篇(1)GPIO输出:点亮led

[复制链接] qrcode

32

主题

38

帖子

110

积分

注册会员

Rank: 2

积分
110
楼主
跳转到指定楼层
发表于 2015-11-24 10:50 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    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开发板试用帖汇总

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

88

帖子

12

积分

新手上路

Rank: 1

积分
12
沙发
发表于 2015-11-25 09:23 AM | 只看该作者
效果不错啊
回复 支持 反对

使用道具 举报

0

主题

121

帖子

80

积分

注册会员

Rank: 2

积分
80
板凳
发表于 2015-11-25 08:39 PM | 只看该作者
 是的,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表