Kernel: 4.4

Soc: msm8996

1.用户空间通过sysfs操作GPIO

(1)启用GPIO sysfs interface

首先看系统中有没有“/sys/class/gpio”这个文件夹。如果没有在编译内核的时候打开 Device Drivers-> GPIO Support-> /sys/class/gpio/… (sysfs interface)

(2)用户空间通过sysfs控制GPIO

# echo 9 > /sys/class/gpio/export     执行此命令会在gpio/下生成gpio9目录

# echo out > gpio9/direction             设置GPIO9方向为输出

# echo 1 > gpio9/value                          设置GPIO9为高电平

# echo 0 > gpio9/value                          设置GPIO9为低电平

# echo 9 > /sys/class/gpio/unexport     关闭对GPIO9的控制

(3)用户空间编程控制GPIO

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h> #define GPIO9 9 int main(void)
{
FILE *filep = NULL;
int i=; filep = fopen("/sys/class/gpio/export", "w");
fprintf(filep, "%d", GPIO9);
fclose(filep); filep = fopen("/sys/class/gpio/gpio9/direction", "w");
fprintf(filep, "out");
fclose(filep); for(i = ; i < ; i++)
{
printf("gpio9 value is 1.\n");
filep = fopen("/sys/class/gpio/gpio9/value", "w");
fprintf(filep,"%d",);
sleep();
fclose(filep); printf("gpio9 value is 0.\n");
filep = fopen("/sys/class/gpio/gpio9/value", "w");
fprintf(filep, "%d", );
sleep();
fclose(filep); } filep = fopen("/sys/class/gpio/unexport", "w");
fprintf(filep, "%d", GPIO9);
fclose(filep); return ;
}

2.GPIO使用总结

(1)每个GPIO引脚只能使用gpio_request获取一次,第二次获取就会报-EBUSY,如果知道已经获取了,那么就直接可以使用gpio_set_value()来控制GPIO引脚电平。

(2)使用regulator-fix probe的GPIO无法通过这种sysfs接口来设置GPIO的值,就是更改不了其值。

GPIO引脚操作的更多相关文章

  1. Linux 内核层和 用户层 配置 GPIO 引脚

    Linux BSP 开发的基础就是和GPIO打交道, 下面总结下这几天对某家开发板的GPIO控制的知识. 公司的开发板用的是 DTB  模式 ,首先,进入 dts,dtsi文件查看关于GPIO 的模块 ...

  2. 树莓派 Learning 003 --- GPIO 000 --- GPIO引脚图

    树莓派 Learning 003 - GPIO 000 - GPIO引脚图 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 Raspberr ...

  3. 全志R58平台的GPIO引脚控制

    全志R58平台的GPIO引脚控制 2017/8/18 15:50 版本:V1.0 开发板:SC5806(全志R58平台) SDK:android4.4.4 本文以GPIO引脚PD24为例,在开发板的背 ...

  4. GPIO引脚速度的应用匹配

    GPIO 引脚速度: GPIO 引脚速度又称输出驱动电路的响应速度:(芯片内部在I/O口的输出部分安排了多个响应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路,通过选择速度来选择不同 ...

  5. [IOT] - 使用 .Net Core 操作 GPIO 引脚点亮 LED 灯泡

    1. 在 VS 2019 中创建 .Net Core 控制台应用程序,使用 Nuget 安装程序包: System.Device.GpioIot.Device.Bindings 2. 更新 Main ...

  6. TI CC2541的GPIO引脚设置.

    P1SEL寄存器, 0xF4, 功能选择用的, 0表示GPIO口, 1表示外设.

  7. 树莓派GPIO引脚标识图

  8. 十三、GPIO子系统

    由于之后的触摸屏驱动分析中使用到了GPIO子系统和i2c子系统,因此在分析触摸屏驱动之前我准备把这两个子系统进行简单分析. 之前我们使用GPIO引脚的方式并不是推荐的方式,当我们更改某一bit时,很有 ...

  9. 通过数组和枚举简化GPIO操作编码

    在工作中,经常遇到大量使用GPIO作为数字量输入输出来控制设备或采集状态,每次定义操作不同的GPIO针脚既麻烦又容易出错,于是就想要简化操作过程.对于数字量输入来说就是采集对应针脚的状态:而输出则是根 ...

随机推荐

  1. iconfont.cn批量加入

    iconfont.cn还没有一个批量加入的功能 以下是最新的图标批量加入购物车功能代码. var icons = document.querySelectorAll('.icon-gouwuche1' ...

  2. Cracking The Coding Interview 3.6

    // Write a program to sort a stack in ascending order. You should not make any assumptions about how ...

  3. Dom操作注意事项

    Dom操作注意事项 基本概念: 在 HTML DOM (文档对象模型)中,每个部分都是节点: 文档本身是文档节点 所有 HTML 元素是元素节点 所有 HTML 属性是属性节点 HTML 元素内的文本 ...

  4. jquery获取URL的参数和锚点

    由于经常会用到替换URL参数值,而网上写的方法代码都太长了,所以在这里写了一个简单的方法,供大家使用. 1)获取url参数 function getUrlParam(name) { var reg = ...

  5. 在linux执行kettle

    1.下载 最新版下载 7.1 https://community.hitachivantara.com/docs/DOC-1009855 2.准备 3.上传任务文件 .kjb,.ktr 4.上传mys ...

  6. codeforces1003D(贪心)

    D. Coins and Queries time limit per test 2 seconds memory limit per test 256 megabytes input standar ...

  7. final文案+美工

    作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2476] 文案+美工: 剧情设计+题目设计+美工: 第21关: 剧情: 计算机学 ...

  8. 解析url中参数

    兼容不带参数等情况 function getUrlParam(){ var params = {}; var search = location.search; search = /\?/.test( ...

  9. day 32 子进程的开启 及其用法

    开启两种子进程的两种方式# # # 1 传统方式# from multiprocessing import Process# import time# def task(name):# print ( ...

  10. JavaWeb:脚本标识

    脚本标识 一.JSP表达式 1.介绍 用于向页面中输出信息 2.语法格式 <%= 表达式%> 3.注意 在"<%"和"="之间不允许有空格,但 ...