正点原子Linux连载第四十九章Li

2023-3-15 来源:不详 浏览次数:

北京白癜风医院 https://wapjbk.39.net/yiyuanfengcai/zn_bjzkbdfyy/

第四十九章Linux按键输入实验

在前几章我们都是使用的GPIO输出功能,还没有用过GPIO输入功能,本章我们就来学习一下如果在Linux下编写GPIO输入驱动程序。I.MX6U-ALPHA开发板上有一个按键,我们就使用此按键来完成GPIO输入驱动程序,同时利用第四十七章讲的原子操作来对按键值进行保护。

49.1Linux下按键驱动原理

按键驱动和LED驱动原理上来讲基本都是一样的,都是操作GPIO,只不过一个是读取GPIO的高低电平,一个是从GPIO输出高低电平。本章实现我们实现按键输入,在驱动程序中使用一个整形变量来表示按键值,应用程序通过read函数来读取按键值,判断按键有没有按下。在这里,这个保存按键值的变量就是个共享资源,驱动程序要向其写入按键值,应用程序要读取按键值。所以我们要对其进行保护,对于整形变量而言我们首选的就是原子操作,使用原子操作对变量进行赋值以及读取。Linux下的按键驱动原理很简单,接下来开始编写驱动。

注意,本章例程只是为了演示Linux下GPIO输入驱动的编写,实际中的按键驱动并不会采用本章中所讲解的方法,Linux下的input子系统专门用于输入设备!

49.2硬件原理图分析

本章实验硬件原理图参考15.2小节即可。

49.3实验程序编写

本实验对应的例程路径为:开发板光盘-2、Linux驱动例程-11_key。

49.3.1修改设备树文件

1、添加pinctrl节点

I.MX6U-ALPHA开发板上的KEY使用了UART1_CTS_B这个PIN,打开imx6ull-alientek-emmc.dts,在iomuxc节点的imx6ul-evk子节点下创建一个名为pinctrl_key的子节点,节点内容如下所示:

示例代码49.3.1.1按键pinctrl节点

1pinctrl_key:keygrp{

2fsl,pins=

3MX6UL_PAD_UART1_CTS_B__GPIO1_IOxF/*KEY0*/

4;

5};

第3行,将GPIO_IO18这个PIN复用为GPIO1_IO18。

2、添加KEY设备节点

在根节点/下创建KEY节点,节点名为key,节点内容如下:

示例代码49.3.1.2创建KEY节点

1key{

2#address-cells=1;

3#size-cells=1;

4

转载请注明:
http://www.wanruiguanye.com/bzcs/77435509.html
  • 上一篇文章:

  • 下一篇文章:
  • 网站首页 版权信息 发布优势 合作伙伴 隐私保护 服务条款 网站地图 网站简介

    温馨提示:本站信息不能作为诊断和医疗依据
    版权所有 2014-2024
    今天是: