网站大量收购独家精品文档,联系QQ:2885784924

s3c2410按键驱动完整版.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
s3c2410按键驱动完整版

/* 2410 中断按键驱动*基于s3c2410的16个按键驱动,采用中断的方式,实现了阻塞和非阻塞,并用定时*器进行了消抖处理消抖,也实现的异步通知,POLL机制,每个源文件我都加了比较 *详细的注释。各位刚刚学习ARM/Linux *驱动的同学可以参考。*/// button_irq_driver .c 驱动源文件 // button_irq_test.c 应用程序---按键测试(open可实现阻塞和非阻塞)// button_poll_test.c 应用程序---poll机制按键测试// button_fasync.c 应用程序---异步通知方式按键测试/* button_irq_driver .c */#includelinux/module.h#includelinux/init.h#includelinux/fs.h#includelinux/device.h#includelinux/cdev.h#includeasm/uaccess.h#includelinux/io.h#includelinux/interrupt.h#includeasm/arch/regs-gpio.h#includelinux/poll.hstatic unsigned int buttons_major = 0;//本地结构体,表示一个按键struct fsbuttons_cdev{struct cdev *buttons_cdev; //按键设备结构体struct class *buttons_class;//所属类unsigned int key_buttons; //按键管脚电?1 /0wait_queue_head_t buttons_wq;struct timer_list button_timer;};static struct fsbuttons_cdev *fs_buttons ;//构建一个结构体,用来描述中断管脚struct fspin{int irq;int pin;char *name;int num;int row_input;int row_output;int int_put;int key_val;};static struct fspin fspin_desc[4]={{IRQ_EINT0,S3C2410_GPF0,row0, 0, S3C2410_GPF0_INP,S3C2410_GPF0_OUTP,S3C2410_GPF0_EINT0},{IRQ_EINT2,S3C2410_GPF2,row1, 1, S3C2410_GPF2_INP, S3C2410_GPF2_OUTP,S3C2410_GPF2_EINT2},{IRQ_EINT11,S3C2410_GPG3,row2, 2,S3C2410_GPG3_INP, S3C2410_GPG3_OUTP,S3C2410_GPG3_EINT11},{IRQ_EINT19,S3C2410_GPG11,row3,3, S3C2410_GPG11_INP, S3C2410_GPG11_OUTP,S3C2410_GPG11_EINT19},};struct pin_col {int pin;int col_input;int col_output;};static struct pin_col col_line[4] = {{S3C2410_GPE11,S3C2410_GPE11_INP,S3C2410_GPE11_OUTP},{S3C2410_GPG6,S3C2410_GPG6_INP,S3C2410_GPG6_OUTP},{S3C2410_GPE13,S3C2410_GPE13_INP,S3C2410_GPE13_OUTP},{S3C2410_GPG2,S3C2410_GPG2_INP,S3C2410_GPG2_OUTP},};static int key_comfirm[4][4]={{10,11,12,16},{7,8,9,15},{4,5,6,14},{1,2,3,13},};/*构建异步通知注册函数用到的结构体*/struct fasync_struct *fsbuttons_fasync;struct fspin *cur_pin;static void set_col_output(void){int i;for(i = 0;i4;i++){s3c2410_gpio_cfgpin(col_line[i].pin, col_line[i].col_output);s3c2410_gpio_setpin(col_line[i].pin,0);}}static void set_col_input(void){inti;for(i = 0;i4;i

您可能关注的文档

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档