Tiny210按键输入子系统

发布者:Meiren520最新更新时间:2018-10-12 来源: eefocus关键字:Tiny210  按键输入  子系统 手机看文章 扫描二维码
随时随地手机看文章

buttons.c驱动源码:

// 参考drivers\input\keyboard\gpio_keys.c 

#include "linux/module.h"

#include "linux/version.h"

#include "linux/module.h"

#include "linux/init.h"

#include "linux/fs.h"

#include "linux/interrupt.h"

#include "linux/irq.h"

#include "linux/sched.h"

#include "linux/pm.h"

#include "linux/slab.h"

#include "linux/sysctl.h"

#include "linux/proc_fs.h"

#include "linux/delay.h"

#include "linux/platform_device.h"

#include "linux/input.h"

#include "linux/gpio_keys.h"

#include "linux/workqueue.h"

#include "linux/gpio.h"

struct pin_desc{

    int irq;

    char *name;

    unsigned int pin;

    unsigned int key_val;

};

struct pin_desc pins_desc[4] = {

    {IRQ_EINT(19), "K4", S5PV210_GPH2(3),  KEY_L},

    {IRQ_EINT(24), "K5", S5PV210_GPH3(0),  KEY_S},

    {IRQ_EINT(25), "K6", S5PV210_GPH3(1),  KEY_ENTER},

    {IRQ_EINT(26), "K7", S5PV210_GPH3(2),  KEY_LEFTSHIFT},

};

static struct input_dev *buttons_dev;

static struct pin_desc *irq_pd;

static struct timer_list buttons_timer;

static irqreturn_t buttons_irq(int irq, void *dev_id)

{

    // 10ms后启动定时器 

    irq_pd = (struct pin_desc *)dev_id;

    mod_timer(&buttons_timer, jiffies+HZ/100);

    return IRQ_RETVAL(IRQ_HANDLED);

}

static void buttons_timer_function(unsigned long data)

{

    struct pin_desc * pindesc = irq_pd;

    unsigned int pinval;

    if (!pindesc)

        return;

    

    pinval = gpio_get_value(pindesc->pin);

    if (pinval)

    {

        // 松开 : 最后一个参数: 0-松开, 1-按下 

        input_event(buttons_dev, EV_KEY, pindesc->key_val, 0);

        input_sync(buttons_dev);

    }

    else

    {

        // 按下 

        input_event(buttons_dev, EV_KEY, pindesc->key_val, 1);

        input_sync(buttons_dev);

    }

}

static int buttons_init(void)

{

    int i;

    

    // 1. 分配一个input_dev结构体 

    buttons_dev = input_allocate_device();;

    // 2. 设置 

    // 2.1 能产生哪类事件 

    set_bit(EV_KEY, buttons_dev->evbit);

    set_bit(EV_REP, buttons_dev->evbit);

    

    // 2.2 能产生这类操作里的哪些事件: L,S,ENTER,LEFTSHIT 

    set_bit(KEY_L, buttons_dev->keybit);

    set_bit(KEY_S, buttons_dev->keybit);

    set_bit(KEY_ENTER, buttons_dev->keybit);

    set_bit(KEY_LEFTSHIFT, buttons_dev->keybit);

    // 3. 注册 

    input_register_device(buttons_dev);

    

    // 4. 硬件相关的操作 

    init_timer(&buttons_timer);

    buttons_timer.function = buttons_timer_function;

    add_timer(&buttons_timer);

    

    for (i = 0; i < 4; i++)

    {

        request_irq(pins_desc[i].irq, buttons_irq, IRQF_TRIGGER_FALLING|IRQF_TRIGGER_RISING,

                            pins_desc[i].name, &pins_desc[i]);

    }

    

    return 0;

}

static void buttons_exit(void)

{

    int i;

    for (i = 0; i < 4; i++)

    {

        free_irq(pins_desc[i].irq, &pins_desc[i]);

    }

    del_timer(&buttons_timer);

    input_unregister_device(buttons_dev);

    input_free_device(buttons_dev);    

}

module_init(buttons_init);

module_exit(buttons_exit);

MODULE_LICENSE("GPL");


关键字:Tiny210  按键输入  子系统 引用地址:Tiny210按键输入子系统

上一篇:Tiny210按键分层分离(总线-驱动-设备模型)
下一篇:Tiny210按键阻塞访问驱动

推荐阅读最新更新时间:2024-03-16 16:16

2015年整体电子系统产值估计衰退2%
    市场研究机构IC Insights估计,2015年整体电子系统(electronic systems)产值将衰退2%,来到1兆4,230亿美元,是该市场有史以来第四度出现衰退(先前曾经衰退的年份为2001、2002与2009年)。 IC Insights预测,在2014年为1兆4,454亿美元的电子系统市场销售额,到2019年可达到1兆6,140亿美元规模,期间平均年复合成长率(CAGR)为2.1。下图是IC Insights最新报告对九大电子系统类别在2016年成长率与市场规模的预估;此九大产品类别估计占据2015年整体电子系统产值近七成。 九大电子系统产品类别产值比较 在各类终端系统中,手机(cellpho
[手机便携]
Tiny210按键输入子系统
buttons.c驱动源码: // 参考drivers\input\keyboard\gpio_keys.c #include linux/module.h #include linux/version.h #include linux/module.h #include linux/init.h #include linux/fs.h #include linux/interrupt.h #include linux/irq.h #include linux/sched.h #include linux/pm.h #include linux/slab.h #include linux/sysctl.h
[单片机]
Tiny210和Tiny4412裸板程序烧写比较
1、Tiny4412启动时首先运行固化在芯片内部iROM中的程序,把启动设备(可能是EMMC/nand flash、SD、USB启动)特定位置处的程序读入片内存 (iRAM) ,并执行它,BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。(详情可参考博文“Exynos4412的启动过程分析”)在汇编流水灯程序中我们通过mkbl2工具制作的BL2: sudo ./sd_fusing.sh /dev/sdc ../../../hardware/1th_led_s/led.bin 分析sd_fusing.sh可知: #################
[单片机]
Synopsys发布用于传感器的超低功耗IP子系统
新思科技公司(Synopsys, Inc)j近日宣布:提供DesignWare® Sensor IP Subsystem传感器IP子系统,它是一个用于传感器控制应用的完整的、集成化的硬件和软件解决方案。新的IP子系统专为处理来自数字和模拟传感器的数据进行了优化,可卸载主处理器负担并且能够以超低功耗更加高效地处理传感器数据。该完全可配置子系统包括一个DesignWareARC®EM4 32位处理器、各种数字接口、模拟到数字数据转换器(ADC)、硬件加速器、一个包含了各种DSP功能和I/O软件驱动程序的综合软件库。该DesignWare传感器IP子系统为设计人员提供了一个完整且经过预先验证的解决方案,它满足了诸如智能传感器、传感器聚合和
[嵌入式]
帝斯曼ForTii Ace JTX8 在汽车电子系统领域取得突破性进展
以科技為立足之本,在全球範圍內活躍于健康、營養和材料領域的荷蘭皇家 帝斯曼 集團,其高性能耐高溫聚醯胺產品ForTii® Ace家族再添新成員 ForTii Ace JTX8 。該創新產品專為汽車電子連接器而設計,適用於任何苛刻設計的連接器,在高溫焊接過程中都不會起泡。   ForTii Ace JTX8是目前全球唯一具備JEDEC MSL 1級(1級濕度敏感級)的聚醯胺材料,連接器及其相關元件的設計人員將能夠利用聚醯胺材料的所有優點打造一款堅固耐用的產品,即使歷經長時間保存,也不用擔心組裝過程中的起泡問題。   應對起泡問題   當零件暴露於高溫環境下,零件中的水分迅速轉化成蒸汽,進而起泡。由於回流焊爐的溫度可輕易上升至26
[嵌入式]
Tiny4412和Tiny210裸板程序烧写比较
1、Tiny4412启动时首先运行固化在芯片内部iROM中的程序,把启动设备(可能是EMMC/nand flash、SD、USB启动)特定位置处的程序读入片内存 (iRAM) ,并执行它,BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个被称为 BL2(Bootloader 2) ,是我们编写的源码。(详情可参考博文“Exynos4412的启动过程分析”)在汇编流水灯程序中我们通过mkbl2工具制作的BL2: sudo ./sd_fusing.sh /dev/sdc ../../../hardware/1th_led_s/led.bin 分析sd_fusing.sh可知: #################
[单片机]
e络盟新增来自TE Connectivity的用于HVAC子系统中环境传感器
工程师现可方便地比较并选购TE创新产品解决方案,用于暖通空调系统(HVAC)的多个子系统 e络盟日前宣布新增来自全球连接器产品领先供应商TE Connectivity(TE)的众多产品方案,进一步丰富其暖通空调系统(HVAC)应用方面的产品库存,其中包括适用于其子系统中的环境传感器及无线控制部分的产品。 客户可访问e络盟子站,并根据各自独特的设计需求和应用难点快速选购到最合适的TE产品系列,其中特色产品包括: 控制系统:断路器W-28 ,采用滑动开关及功率电感(具备噪音过滤功能) 辅助PCB:中程继电器、信号继电器IM、P2及变压器 环境传感器:可释放的Poke-In线端连接器、FAS
[工业控制]
EL场致显示技术及其在便携式电子系统中的应用
    摘要: 介绍了EL场致显示技术及如何构建EL显示控制模块以便对EL屏进行显示控制的原理和方法,给出了控制模块的设计框图及实际的电路连接图。最后给出了该接口技术的软件设计流程图和初始化程序。     关键词: EL LCD 显示控制 电磁干扰 接口技术 1 引言 显示屏作为人机交互的关键设备,其重要性不言而喻。传统的CRT显示屏由于受到基本结构的限制,在体积、功耗方面的表现往往不尽如人意。随后又出现了LCD液晶显示屏,其小巧的造型,较低的功耗,立即引起了人们的注意。目前在许多领域中,LCD都得到了广泛的应用。但是,LCD的亮度、可视范围、响应时间上的缺陷,又成为其继续推广的最大障碍。EL场致显示屏的
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved