您的位置 首页 厂商

嵌入式Linux下运用GPIO中止功用

1).简介GPIO应用是嵌入式设备最基本的应用之一,本文就基于EmbeddedLinux系统演示开发GPIO中断以及输出相关的基本应用示例.本文所采用的硬件平台来自与Toradex发布的基

  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” 的主程序代码罗列如下, 其思路和上面是共同的, 就不赘述.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/205389.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部