BBB学习(八):操作BBB普通IO口
一、前言
在linux系统中,一切设备都是以文件形式存在,因此其有一个中心思想是“一切都是文件”(当然除了网络设备是用套接字方式之外)。在接下来的文章中会操作BBB相关硬件接口(gpio\i2c\spi等),此时对这个思想的理解会更深刻。每一个硬件接口在/dev或/sys/class下都有对应的文件,通过对该硬件接口的open\write\read实现对其的操作。
本节将对BBB普通IO口进行操作,以控制一个gpio口输出高低电平及输入高低电平检测。
二、shell命令控制IO口
主要路径及命令
GPIO文件位置:/sys/class/gpio
shell主要命令:
cat命令:读取文件内容。echo: 写入文件内容
主要流程:
- 打开该GPIO44目录:cd /sys/class/gpio
- 查看文件当前文件:ls。查看有无gpio44这个文件夹。如果没有 ,输入:echo 44 > export ,就可以出现。出现后输入cd gpio44
- 查看GPIO44当前状态: cat direction
可以看出gpio44默认是输入状态。我们可以把它置成输出 echo out > direction. - 设置GPIO44输出高电平:echo 1 > value
设置GPIO44输出低电平:echo 0 > value - 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;
}
主要流程:
- 打开xshell连接到BBB板,输入命令:
nano testIO.cpp
,将上述程序粘贴到该文件中。
- 此时ctrl+o保存,此时会出现下图,接着回车就保存完成。保存后ctrl+x退出。
- 输入以下命令进行编译。
g++ -c testIO.cpp
g++ testIO.o -o test
- 运行命令执行程序:
./test
通过查询IO可知,gpio44为P8_12,可以通过将BBB本身接口的3.3V或地接到P8_12,可以检测其输入状态。
四、总结
本节主要介绍了BBB作为普通IO口的操作流程,主要是通过对文件的读写实现对gpio的简单控制。本节作为入门,直接在BBB上对程序进行编译,不涉及交叉编译的知识。可以简单了解BBB操作流程。
BBB学习(八):操作BBB普通IO口相关推荐
- STM32笔记 GPIO介绍及IO口操作 STM32F0 利用C语言位域实现仿位带操作
文章目录 GPIO简介 工作方式 相关寄存器介绍 IO 操作步骤 IO口三种操作细解 附录:C语言相关 偏移地址与绝对地址 GPIO简介 GPIO:每个连接到I/O总线上的设备都有自己的I/O地址集, ...
- 单片机IO口操作总结
单片机IO口操作总结 一.单片机IO口概述 二.单片机IO口操作 1.输入口使用 2.输出口使用 三.关于上拉电阻 四.休眠状态下IO口配置 4.1.未使用的IO口 4.2 输入口 一.单片机IO口概 ...
- IO 口的位操作实现
一.概念 该部分代码在 sys.h 文件中,实现对 STM32 各个 IO 口的位操作,包括读入和输出.当然在这些函数调用之前,必须先进行 IO 口时钟的使能和 IO 口功能定义.此部分仅仅对 IO ...
- BBB学习(十八):cape介绍(一)DeviceTree
文章目录 一.前言 二. Device Tree介绍 2.1 什么是device tree 2.2 device tree文件 2.3 device tree语法结构 2.3.1 结点名称@单元地址 ...
- BBB学习(十):操作BBB I2C接口
一.前言 前文中介绍了普通IO口的使用以及引脚功能互查表的用法,主要想通过简单的IO操作熟悉BBB的使用流程,在BBB的接口中,还在一类功能复用的引脚,如I2C.spi等,本节通过介绍I2C的使用方法 ...
- 【Arduino学习】一、IO口操作
文章目录 前言 所需材料: 一.Arduino概述 1.什么是Arduino 2.Arduino UNO 二.I/O口介绍 1.I/O口 2.GPIO口 三.I/O 操作函数 1.设置I/O口的工作状 ...
- BBB学习(九):BBB引脚功能互查表的用法
文章目录 一.前言 二.查看BBB相关端口配置 三.对照BBB端口功能表 四.总结 一.前言 前节介绍了BBB普通IO口的操作,同时也完成了程序对IO口输入状态的检测.实际上,BBB众多端口都是可以配 ...
- 单片机小白学步系列(二十一) IO口:基本的LED和按键操作
本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮LED 2.一个按键控制LED,按下灯亮,释放灯灭 3.两个按键控制一个LED,一个键开灯,一个键关灯 实验 ...
- 单片机c语言中io取反,单片机小白学步(21) IO口:基本的LED和按键操作
原标题:单片机小白学步(21) IO口:基本的LED和按键操作 本篇我们先介绍最基础的几个IO口操作.学完本篇,大家要能自己独立完成下面几个实验. 1.点亮 2.一个按键控制LED,按下灯亮,释放灯灭 ...
最新文章
- 【手写系列】写出我的第一个框架:迷你版Spring MVC
- CodeIgniter笔记4
- 搭建本地文件服务器实验报告,下搭建服务器实验报告.pdf
- CSS/DIV网页设计视频教程目录【转】
- 用jquery或js实现三个div自动循环轮播
- C语言指针概念全面解析
- 动态解析dll及使用类
- Android串口调试工具ComAssistant下载
- 7大国内外自动驾驶仿真平台汇总
- 国内免费CMS系统大全
- 程序员到高级程序员,只需要10个步骤!
- 怎样批量将图片转成PDF格式?图片转换PDF操作方法
- h标签,b标签,em,i ,u,s标签
- 微信发朋友圈和朋友圈点赞测试用例
- Asciinema - 终端日志记录神器,机器学习开发者的福音
- 如何为firefox安装视频播放器
- 如何自己动手给笔记本电脑增加内存
- python国际象棋规则_如何使用Python编写一个国际象棋AI程序
- 关于PLM/EVT/DVT/PVT/MP的解释
- 周末交友好运气:请找中国张名记
热门文章
- 论文笔记--An Overview of Cross-Media Retrieval: Concepts, Methodologies,...-2018- (二)
- MathCAD Prime 8.0数学工具的安装与使用配置
- 有什么合适的副业和兼职适合程序员业余和下班做的?
- 有哪些简单好用的电脑录音软件
- 客户服务电子邮件模板,可在为您节省工作时间
- 亚信科技、清华AIR、英特尔成功举办WAIC智能算网与绿色计算论坛
- 树莓派安装ubuntu18.04
- SQL学习(三):greatest()和least()函数(最大值和最小值)
- SQL Server数据库报错:无法打开物理文件
- 新的空难事故,正在酝酿中……?