arm shell 获取本地键盘输入值_【记录】ARM-linux开发之按键控制

这篇博客详细介绍了在ARM Linux环境下进行按键控制的三种方式:查询、中断和poll机制。文章通过混杂驱动程序框架,展示了如何配置中断,包括中断配置、中断函数编写,并讨论了中断唤醒休眠进程的过程。此外,还提到了使用信号量进行应用层与内核通信的方法,以及在QT应用中处理信号的挑战和解决方案。
摘要由CSDN通过智能技术生成

【记录】ARM-linux开发之按键控制

[复制链接]

本帖最后由 ywlzh 于 2016-7-30 11:19 编辑

驱动框架:

采用混杂驱动程序的框架,具体细节在下面这个帖子二楼做过描述

http://bbs.eeworld.com.cn/thread-495558-1-1.html

硬件电路图:

QQ图片20160730083821.jpg (31.87 KB, 下载次数: 0)

2016-7-30 08:37 上传

QQ图片20160730083854.jpg (40.78 KB, 下载次数: 0)

2016-7-30 08:37 上传

分析:

对于按键程序的编写,在我用stm32单片机的时候,就有多种控制方式,ARM-linux 下也有多种方式去做,查询,中断,poll机制,信号,用内核定时器........

查询方式:

这种方式的实现,内核只需要提供read,open接口即可,在open()里面将对应引脚初始化成输入配置,在应用程序中,C语言写的话,while(1){}无限循环,读按键,发现读出来的值有变化,就证明按键按下去了,就打印到终端,用qt,C++写的话,需要自己创建一个线程,在这个线程里不断的执行读,打印,不管是用什么应用程序写,用top命令可以发现自己的应用程序占据cpu 77.7%甚至更多。这种方式显然不适合。

中断方式:

对于中断更多的解释可以查看《宋宝华-精通LINUX设备驱动开发》第四章第2节

QQ图片20160730091509.jpg (45.66 KB, 下载次数: 0)

2016-7-30 09:14 上传

QQ图片20160730091626.jpg (136.56 KB, 下载次数: 0)

2016-7-30 09:15 上传

QQ图片20160730091652.jpg (104.18 KB, 下载次数: 0)

2016-7-30 09:15 上传

从中提出我需要写的部分,中断配置添加进我写好的混杂驱动程序框架中,在函数外定义一个结构体:

static unsigned char key_value; //保存键值,作为全局变量使用复制代码

/*   硬件引脚 定义 */

struct pin_des {

int   pin;

unsigned char key_val;

};

static  struct pin_des pins_desc[3] = {

{MXS_PIN_TO_GPIO(PINID_SSP0_DATA4), 0x01},

{MXS_PIN_TO_GPIO(PINID_SSP0_DATA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值