嵌入式Linux下使用GPIO中断功能

1).简介
gpio应用是嵌入式设备最基本的应用之一,本文就基于embedded linux系统演示开发gpio中断以及输出相关的基本应用示例.
本文所采用的硬件平台来自与toradex发布的基于nxp imx7 soc的colibri imx7 arm计算机模块配合colibri eva board.
2).准备
a). toradexcolibri imx7s(基于nxp imx7ssoc)计算机模块配合colibri eva board开发载板.
b). embedded linux使用toradex官方发布的linux release v2.6.1,更新方法请见这里.
3).软硬件安装
a).本文所实现的gpio应用原理为使用两个gpio接口,一个作为按键输入使用,另外一个作为输出驱动载板上面的led.每次按键后,会将led状态翻转,也就是点亮和熄灭交替.
b).硬件连接,将colibri eva载板x3连接器c19和x21连接器sw6连接,作为按键输入端;将x3连接器a19和x21连接器led1连接,用于驱动led1.
c).在ubuntu 14.04开发主机配置开发环境,这里使用eclipse作为开发ide,具体配置可以参考这里的linux开发上手指南.
4). gpio应用示例
a).运行eclipse,创建一个新项目,命名”gpiointtest” ,配置为”empty project”和“cross gcc”.
b).在”gpiointtest”项目下首先新建gpio操作相关的header和source文件
./ header文件” gpioconfig.h”代码如下,主要定义一些全局环境变量和声明gpio基本的操作函数
https://github.com/simonqin09/gpiointtest/blob/master/gpioconfig.h
./ source文件“gpioconfig.c”代码如下,主要是gpio基本操作函数
https://github.com/simonqin09/gpiointtest/blob/master/gpioconfig.c
c).主函数文件为“gpiointtest.c”,源代码如下,其主要实现的功能要点下面会逐一列出.
https://github.com/simonqin09/gpiointtest/blob/master/gpiointtest.c
./参考colibri imx7数据手册以及这里的gpio号码定义规则,本文所使用的c19和a19引脚对应的gpio为gpio-53和gpio-52,因此主程序在最开始就做了定义,对应变量gpio2和gpio1.
./变量定义完成后第二部分就是gpio的export和配置,将gpio1配置为输出, gpio2配置为中断输入,上升沿触发.
./这里我们采用”poll”函数作为中断事件处理函数,使用的也是其标准用法,这里就不赘述.
./这里详细说明下在触发事件后的处理,也就是” if (fdset[1].revents & pollpri)”里面的内容.首先通过“lseek”函数将文件还原以便处理下一次中断触发;然后通过”cnt”变量的判定排除程序运行第一次默认触发的中断;最后在有效中断触发情况下,再通过“usleep”和gpio2当前value的读取来排除机械按键抖动,这样在每次确定按键的前提下,将gpio1的输出做反转,对应也就是led亮和灭.
d).编译项目,然后将可执行文件scp下载到colibri imx7执行,执行情况如下.在测试中也可以发现当出现按键抖动的时候,按键次数统计输出会跳过抖动的那次计数,同样led控制也不会被干扰.
e).当在所需要同时控制的gpio数量比较多的情况下,采用”epoll”函数效率会高于“poll”,因此这里也将基于“epoll”的主程序代码罗列如下,其思路和上面是一致的,就不赘述.
https://github.com/simonqin09/gpiointtest/blob/master/gpiointtest_epoll.c

三相交流同步发电机,为什么禁止单相使用?三相交流同步发电机单相运行的危害
真·带鱼屏三星CHG90将于ChinaJoy亮相:市面上最“疯狂”的产品
十进制和二进制之间的转换
电源设计PCB布线的特性
磁铁检测报告在如何办理磁铁检测标准和检测项目是什么?
嵌入式Linux下使用GPIO中断功能
废电池“暗藏玄机”栗广普变废为宝
开关电源:关于TL431电路的电阻取值
苹果MacBook Pro将采用Intel第七代Kaby Lake处理器
人工智能是隐藏在工业互联网领域的巨大产业机会
印度厂商Yotta采购10亿美元英伟达AI芯片
云从科技:AI带来新冲击,布局人机协同
一匹黑马的诞生?360N5:最强游戏手机+配置超华为旗舰+价格秒杀千元机
Moxa推出最新工业级网管型DSL以太网扩展器
家用电烙铁多少瓦合适_电烙铁头怎样防止氧化不沾锡
ABB变频器的典型故障及处理办法
探讨产业互联网发展背景、定义及概念区别
618盛典狂欢,热爱4K不停歇
三星发布首款最新标准的5G基带2018年年底见
小米迎来微信指纹支付 Home键功能最多的要数魅族了