一、前言

在linux系统中,一切设备都是以文件形式存在,因此其有一个中心思想是“一切都是文件”(当然除了网络设备是用套接字方式之外)。在接下来的文章中会操作BBB相关硬件接口(gpio\i2c\spi等),此时对这个思想的理解会更深刻。每一个硬件接口在/dev或/sys/class下都有对应的文件,通过对该硬件接口的open\write\read实现对其的操作。

本节将对BBB普通IO口进行操作,以控制一个gpio口输出高低电平及输入高低电平检测。

二、shell命令控制IO口

主要路径及命令

GPIO文件位置:/sys/class/gpio

shell主要命令:
cat命令:读取文件内容。echo: 写入文件内容

主要流程:

  1. 打开该GPIO44目录:cd /sys/class/gpio
  2. 查看文件当前文件:ls。查看有无gpio44这个文件夹。如果没有 ,输入:echo 44 > export ,就可以出现。出现后输入cd gpio44

  1. 查看GPIO44当前状态: cat direction
    可以看出gpio44默认是输入状态。我们可以把它置成输出 echo out > direction.
  2. 设置GPIO44输出高电平:echo 1 > value
    设置GPIO44输出低电平:echo 0 > value
  3. gpio44在BBB板子上是P8_12,可以通过接led或测量电平查看其电平状态。

三、c++编程实现输入状态查询

#include <stdio.h>
#include <unistd.h>
#include<iostream>using namespace std;#define GPIO_DIR "/sys/class/gpio/gpio44/"
int main()
{FILE *fp=NULL;int i=0;char ioStatus = 0;fp=fopen(GPIO_DIR"direction","r+");   /*读写模式打开direction*/if (fp == NULL) {cout << "open failed!"<< endl;return 0;}fwrite("in",sizeof(char),2,fp);    /*设置为输入模式*/fclose(fp);for (i=0;i<5;i++){       fp=fopen(GPIO_DIR"value","r+");if (fp == NULL) {cout << "open failed!" << endl;return 0;}fread(&ioStatus, sizeof(char),1,fp);  /*读取引脚输入电平*/cout << "gpio44 input status:" <<ioStatus<< endl;sleep(1);    /*延时一秒*/fclose(fp);}return 0;
}

主要流程:

  1. 打开xshell连接到BBB板,输入命令:nano testIO.cpp,将上述程序粘贴到该文件中。

  1. 此时ctrl+o保存,此时会出现下图,接着回车就保存完成。保存后ctrl+x退出。

  1. 输入以下命令进行编译。
g++ -c testIO.cpp
g++ testIO.o -o test
  1. 运行命令执行程序:./test
    通过查询IO可知,gpio44为P8_12,可以通过将BBB本身接口的3.3V或地接到P8_12,可以检测其输入状态。

四、总结

本节主要介绍了BBB作为普通IO口的操作流程,主要是通过对文件的读写实现对gpio的简单控制。本节作为入门,直接在BBB上对程序进行编译,不涉及交叉编译的知识。可以简单了解BBB操作流程。

BBB学习(八):操作BBB普通IO口相关推荐

  1. STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作

    文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...

  2. 单片机IO口操作总结

    单片机IO口操作总结 一.单片机IO口概述 二.单片机IO口操作 1.输入口使用 2.输出口使用 三.关于上拉电阻 四.休眠状态下IO口配置 4.1.未使用的IO口 4.2 输入口 一.单片机IO口概 ...

  3. IO 口的位操作实现

    一.概念 该部分代码在 sys.h 文件中,实现对 STM32 各个 IO 口的位操作,包括读入和输出.当然在这些函数调用之前,必须先进行 IO 口时钟的使能和 IO 口功能定义.此部分仅仅对 IO ...

  4. BBB学习(十八):cape介绍(一)DeviceTree

    文章目录 一.前言 二. Device Tree介绍 2.1 什么是device tree 2.2 device tree文件 2.3 device tree语法结构 2.3.1 结点名称@单元地址 ...

  5. BBB学习(十):操作BBB I2C接口

    一.前言 前文中介绍了普通IO口的使用以及引脚功能互查表的用法,主要想通过简单的IO操作熟悉BBB的使用流程,在BBB的接口中,还在一类功能复用的引脚,如I2C.spi等,本节通过介绍I2C的使用方法 ...

  6. 【Arduino学习】一、IO口操作

    文章目录 前言 所需材料: 一.Arduino概述 1.什么是Arduino 2.Arduino UNO 二.I/O口介绍 1.I/O口 2.GPIO口 三.I/O 操作函数 1.设置I/O口的工作状 ...

  7. BBB学习(九):BBB引脚功能互查表的用法

    文章目录 一.前言 二.查看BBB相关端口配置 三.对照BBB端口功能表 四.总结 一.前言 前节介绍了BBB普通IO口的操作,同时也完成了程序对IO口输入状态的检测.实际上,BBB众多端口都是可以配 ...

  8. 单片机小白学步系列(二十一) IO口:基本的LED和按键操作

    本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮LED 2.一个按键控制LED,按下灯亮,释放灯灭 3.两个按键控制一个LED,一个键开灯,一个键关灯 实验 ...

  9. 单片机c语言中io取反,单片机小白学步(21) IO口:基本的LED和按键操作

    原标题:单片机小白学步(21) IO口:基本的LED和按键操作 本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮 2.一个按键控制LED,按下灯亮,释放灯灭 ...

最新文章

  1. 【手写系列】写出我的第一个框架:迷你版Spring MVC
  2. CodeIgniter笔记4
  3. 搭建本地文件服务器实验报告,下搭建服务器实验报告.pdf
  4. CSS/DIV网页设计视频教程目录【转】
  5. 用jquery或js实现三个div自动循环轮播
  6. C语言指针概念全面解析
  7. 动态解析dll及使用类
  8. Android串口调试工具ComAssistant下载
  9. 7大国内外自动驾驶仿真平台汇总
  10. 国内免费CMS系统大全
  11. 程序员到高级程序员,只需要10个步骤!
  12. 怎样批量将图片转成PDF格式?图片转换PDF操作方法
  13. h标签,b标签,em,i ,u,s标签
  14. 微信发朋友圈和朋友圈点赞测试用例
  15. Asciinema - 终端日志记录神器,机器学习开发者的福音
  16. 如何为firefox安装视频播放器
  17. 如何自己动手给笔记本电脑增加内存
  18. python国际象棋规则_如何使用Python编写一个国际象棋AI程序
  19. 关于PLM/EVT/DVT/PVT/MP的解释
  20. 周末交友好运气:请找中国张名记

热门文章

  1. 论文笔记--An Overview of Cross-Media Retrieval: Concepts, Methodologies,...-2018- (二)
  2. MathCAD Prime 8.0数学工具的安装与使用配置
  3. 有什么合适的副业和兼职适合程序员业余和下班做的?
  4. 有哪些简单好用的电脑录音软件
  5. 客户服务电子邮件模板,可在为您节省工作时间
  6. 亚信科技、清华AIR、英特尔成功举办WAIC智能算网与绿色计算论坛
  7. 树莓派安装ubuntu18.04
  8. SQL学习(三):greatest()和least()函数(最大值和最小值)
  9. SQL Server数据库报错:无法打开物理文件
  10. 新的空难事故,正在酝酿中……?