欢迎来到文档下载导航网!

s3c2410按键驱动完整版.pdf

时间:2020-11-26|当前位置:首页 > 计算机 > 计算机资料/编程 > |用户下载:

s3c2410按键驱动完整版.pdf


本文档部分文本预览

/* 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 */ #include #include #include #include #include #include #include #include #include #include static unsigned int buttons_major = 0; // 本地结构体 ,表示一个按键 struct fsbuttons_cdev{ struct cdev *buttons_cdev; // 按键设备结构体 struct class *buttons_class;// 所属类 unsigned int key_buttons; // 按键管脚电 ?1 /0 wait_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;i<4;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) { int i; for(i = 0;i<4;i++){ s3c2410_gpio_cfgpin(col_line[i].pin, col_line[i].col_input); s3c2410_gpio_pullup(col_line[i].pin, 0);// 上拉 } } //void (*function)(unsigned long); static irqreturn_t button_timer_fun(unsigned long data) { int i; unsigned int val_sec; int row; int col =-1; if(!cur_pin) return IRQ_NONE; val_sec = s3c2

继续预览文档剩余内容

温馨提示:本页预览文本内容并非错乱,是从文档中提取部分无格式预览!如您需要正常预览文档全文,请点击下方按钮↓↓↓

上一篇:数据结构C语言版本第一二章练习习题答案.docx

栏    目:计算机资料/编程

下一篇:第8章电子商务在经济领域中的应用练习题答案.doc

本文标题:s3c2410按键驱动完整版.pdf

本文地址:https://www.365weibook.com/html/20201126/376840.html

    正常预览或下载提示:

    本页面文档预览是由服务器自动提取的部分内容,并不是文档错乱。如您需要预览全文或下载文档,请点击页面左侧(点击去预览文档全文或下载文档)按钮,进行全文预览或下载。

推荐下载

联系我们 | 广告投放 |网站地图

免责申明:本网站不提供任何形式的下载服务,因此与之有关的知识产权纠纷本网站不承担任何责任。

如果侵犯了您的权利,请与我们联系,我们将进行删除处理。