https://yq.aliyun.com/ziliao/273436

一.mtk平台的gpio控制 
1.1 内核中的gpio配置 
//设置gpio18为GPIO模式 
mt_set_gpio_mode(GPIO18, GPIO_MODE_GPIO);   
//设置gpio18方向为out 
mt_set_gpio_dir(GPIO18, GPIO_DIR_OUT); 
//设置gpio18高 
mt_set_gpio_out(GPIO18, GPIO_OUT_ONE);  //低是ZERO 
1.2 上层应用控制gpio的高低 
cong@msi:/work/mtk/temp/gpiotest$ cat gpiotest.c 
#include <stdio.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <sys/ioctl.h>
#include <linux/ioctl.h>

#define dbmsg(fmt, args ...) printf("%s:%s[%d]: "fmt"\n", __FILE__,__FUNCTION__, __LINE__,##args)

#define GPIO_IOC_MAGIC 0x90
#define GPIO_IOCQMODE _IOR(GPIO_IOC_MAGIC, 0x01, uint32_t)
#define GPIO_IOCTMODE0 _IOW(GPIO_IOC_MAGIC, 0x02, uint32_t)
#define GPIO_IOCTMODE1 _IOW(GPIO_IOC_MAGIC, 0x03, uint32_t)
#define GPIO_IOCTMODE2 _IOW(GPIO_IOC_MAGIC, 0x04, uint32_t)
#define GPIO_IOCTMODE3 _IOW(GPIO_IOC_MAGIC, 0x05, uint32_t)
#define GPIO_IOCQDIR _IOR(GPIO_IOC_MAGIC, 0x06, uint32_t)
#define GPIO_IOCSDIRIN _IOW(GPIO_IOC_MAGIC, 0x07, uint32_t)
#define GPIO_IOCSDIROUT _IOW(GPIO_IOC_MAGIC, 0x08, uint32_t)
#define GPIO_IOCQPULLEN _IOR(GPIO_IOC_MAGIC, 0x09, uint32_t)
#define GPIO_IOCSPULLENABLE _IOW(GPIO_IOC_MAGIC, 0x0A, uint32_t)
#define GPIO_IOCSPULLDISABLE _IOW(GPIO_IOC_MAGIC, 0x0B, uint32_t)
#define GPIO_IOCQPULL _IOR(GPIO_IOC_MAGIC, 0x0C, uint32_t)
#define GPIO_IOCSPULLDOWN _IOW(GPIO_IOC_MAGIC, 0x0D, uint32_t)
#define GPIO_IOCSPULLUP _IOW(GPIO_IOC_MAGIC, 0x0E, uint32_t)
#define GPIO_IOCQINV _IOR(GPIO_IOC_MAGIC, 0x0F, uint32_t)
#define GPIO_IOCSINVENABLE _IOW(GPIO_IOC_MAGIC, 0x10, uint32_t)
#define GPIO_IOCSINVDISABLE _IOW(GPIO_IOC_MAGIC, 0x11, uint32_t)
#define GPIO_IOCQDATAIN _IOR(GPIO_IOC_MAGIC, 0x12, uint32_t)
#define GPIO_IOCQDATAOUT _IOR(GPIO_IOC_MAGIC, 0x13, uint32_t)
#define GPIO_IOCSDATALOW _IOW(GPIO_IOC_MAGIC, 0x14, uint32_t)
#define GPIO_IOCSDATAHIGH _IOW(GPIO_IOC_MAGIC, 0x15, uint32_t)
    
int main ( int argc, char *argv[] )
{
    int fd_gpio;
    int ret;
    
    fd_gpio = open("/dev/mtgpio",O_RDWR);
    if(fd_gpio < 0)
    {
     printf("fd_gpio open error\n");
        return -1;
    }

while(1)
    {
        ret = ioctl(fd_gpio, GPIO_IOCSDATAHIGH, 18);
        sleep(1);
        ret = ioctl(fd_gpio, GPIO_IOCSDATAHIGH, 18);
        sleep(1);
    }

close(fd_gpio);
    return 0;
} 1.3 应用代码 
  gpiotest.rar  (下载后改名为gpiotest.tar.gz) 
1.4 查看gpio状态 
/sys/class/misc/mtgpio/pin
130|root@78P01:/ # cat /sys/class/misc/mtgpio/pin 
PIN: [MODE] [PULL_SEL] [DIN] [DOUT] [PULL EN] [DIR] [IES]
3: 3 0 0 0 0 0 1 MI                  -->MODE这一项就是在code.dws中配的MODE
4: 3 0 0 0 0 1 1 MO
5: 3 0 1 0 0 1 1 CS
6: 3 0 0 0 0 1 1 CLK 二.利用sys控制gpio口 
2.1 代码如下 
#include <linux/init.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/ioport.h>
#include <linux/errno.h>
#include <linux/workqueue.h>
#include <linux/platform_device.h>
#include <linux/types.h>
#include <linux/io.h>
#include <mach/mt_gpio.h>

#define GPIO_POWER_EN GPIO123 //

typedef struct {
    int gpio_power;
}hello_priv;

static ssize_t hello_set_power(struct device *dev,struct device_attribute *attr,const char *buf, size_t count)
{
    hello_priv* prv = dev_get_drvdata(dev);
    if ('0' == buf[0]) //shutdown
    { //process: pin low-->high
     mt_set_gpio_out(prv->gpio_power, GPIO_OUT_ZERO);
      msleep(1500);
      mt_set_gpio_out(prv->gpio_power, GPIO_OUT_ONE);
      printk(KERN_NOTICE "cong: %s:%s[%d]: buf=%s", __FILE__,__FUNCTION__, __LINE__,buf); 
    }else if ('1' == buf[0]

以上是Linux内核---56.gpio控制__Linux的全部内容,在云栖社区的博客、问答、云栖号、人物、课程等栏目也有Linux内核---56.gpio控制__Linux的相关内容,欢迎继续使用右上角搜索按钮进行搜索linux内核 ,以便于您获取更多的相关知识。

mtk平台的gpio控制相关推荐

  1. MTK平台 mt6771 GPIO控制

    MTK平台下GPIO控制分为lk和正常模式控制: lk模式控制GPIO(所用调用必须包含在编译lk的宏定义中) 头文件: #include <platform/mt_gpio.h> //使 ...

  2. MTK 平台 CABC 背光控制机制

    转载自:LABC and CABC-MTK Platform 1.简介 显示屏在移动设备里一直的是耗电大户,显示屏的背光显然是电池杀手,所以拿背光"开刀"介绍两种实际应用较为可行省 ...

  3. MTK平台设置GPIO

    先来命令行,这种最方便 节点位置:./sys/devices/platform/1000b000.pinctrl/mt_gpio 查看cat mt_gpio你会发现一串9位数字. 至于是什么,得看文档 ...

  4. 零基础学习MTK平台camera引脚配置

    目录 一.MTK平台的GPIO配置 1. MTK平台GPIO驱动程序提供了两个接口: 2.配置dws文件 3.配置dts文件 二.MTK平台camera模块的GPIO配置 一.MTK平台的GPIO配置 ...

  5. Linux学习~树莓派gpio控制

    WiringPi 是应用于树莓派平台的 GPIO 控制库函数,WiringPi 遵守 GUN Lv3.wiringPi 使用 C 或者 C++ 开发并且可以被其他语言包转,例如 Python.ruby ...

  6. Raspberry Pi 4B树莓派 |#入门教程02# 树莓派GPIO控制(Python、C)

    树莓派GPIO编号方式 功能物理引脚 从左到右,从上到下:左边奇数,右边偶数:1-40 通过打开终端窗口并运行命令,可以在Raspberry Pi上访问方便的参考pinout.该工具由GPIO零 Py ...

  7. 树莓派python控制gpio_树莓派的GPIO控制

    陈拓chentuo@ms.xab.ac.cn 2018.06.09/2018.06.10 从网上下载了几张精美的图片,感谢图片的制作者! 0. 概述 本文介绍树莓派 Zero W的GPIO控制,并用L ...

  8. MTK平台LED配置

    2016年12月16号 MTK平台调试GPIO LED灯 过去没有调试过MTK平台的GPIO,对这个平台的陌生导致了对于驱动的不解.之后经过对说明文档的阅读和思考.找到了以下方法. 首先,在MTK平台 ...

  9. 树莓派 GPIO 控制

    常用开源工程简介 树莓派内核中已经编译自带了 gpio 的驱动,我们常通过一些第三方写好的库函数来完成具体的操作,比较常见的操作库函数有: python GPIO 开发语言--python 简单介绍- ...

最新文章

  1. LeetCode简单题之同构字符串
  2. 用seaborn 画出唯美的论文专用图片,自己定制python画图的数据集
  3. apache 修改最大连接数
  4. 阿里云服务器配置开发环境第一章:Centos7.3安装git 和 zsh
  5. java日期大小比较(亲测)
  6. docker安装gamit_Gamit-Globk完整安装攻略
  7. HDOJ 1233 (克鲁斯卡尔+并查集)
  8. CSS+DIV+HTML(一)--HTML总结
  9. springMVC后台验证信息不显示的原因初探
  10. 伯克利区块链课程:替代密码验证,比特币应用数字签名的进化之路
  11. java soap服务_「java调用webservice」java调用webservice接口 三种方法 - seo实验室
  12. 计算机一级如何加脚注,用word添加脚注图文的方法是什么?这个计算机技能不会就晚了...
  13. 【LaTeX笔记12】Latex分栏布局及模板使用
  14. 20201212大一集训牛客网题之d题中学数学题
  15. 青少年CTF--misc部分题解
  16. 【Hack The Box】linux练习-- Ophiuchi
  17. 如何将代码插入到Word文档
  18. 如何下载Jason2测高数据
  19. JavaApi.Date
  20. 2018-07-13心情日记

热门文章

  1. 微信小程序 Springboot校运会高校运动会管理系统
  2. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
  3. “具有NDK音视频开发经验者优先”,7/10的安卓招聘要求中都这样写,还不上手?
  4. PT2262软件解码程序
  5. android sqlite delete 返回值,SQLite 使用详解
  6. HTML,CSS,JS
  7. vs2017开发ActiveX(主讲OCX)(十)、手动添加自定义方法
  8. 一个想法照进现实-《IT连》创业项目:关于团队组建
  9. 史莱姆方块java_史莱姆 - Minecraft Wiki,最详细的官方我的世界百科
  10. oracle中job_queue_processes 表,参数job_queue_processes与Oracle jobs - 一沙弥的世界