3+1键盘驱动学习.doc

3+1键盘驱动学习.doc

ID:28000866

大小:137.00 KB

页数:8页

时间:2018-12-07

3+1键盘驱动学习.doc_第1页
3+1键盘驱动学习.doc_第2页
3+1键盘驱动学习.doc_第3页
3+1键盘驱动学习.doc_第4页
3+1键盘驱动学习.doc_第5页
资源描述:

《3+1键盘驱动学习.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、3+1键盘驱动学习(fgsink@gmail.com)实验环境:2键盘的实现2键盘原理图:2键盘使用引脚资源:2键盘原理分析:2驱动分析:3一、文件中包含的函数列表3二、函数层次关系3三、各函数分析41、file_operations结构体42、初始化工作53、当有键被按下时发生了什么54、当应用程序调用了read(fd,buf,2)时发生了什么7程序88实验环境:硬件:Mini4020v1.1软件:U-Boot1.3.3Linuxversion2.6.16(root@localhost.localdomain)(gccversion3.4.1)SEP4020ARMLinux-2.6.16

2、SDK3.1nfs:MINI4020资料光盘Mini4020SDK开发软件包Mini4020fs编译内核Linux-v3.4编译器:arm-linux-gccversion3.4.1键盘驱动文件:sep4020_key.c(见附件)键盘的实现键盘原理图:键盘使用引脚资源:键盘原理分析:初始化键盘时,将ROW1,ROW2,ROW3三条线输出高电平,如果有键被按下,三极管基极变为高电平,三极管导通,集电极被拉低,产生一个下降沿,触发中断,进入中断程序。8扫描时,输出ROW[1:3]=100,若INT0还是低电平,则是第一行有键被按下,否则输出ROW[1:3]=010,查第二行是否有键被

3、按下,INT0为低电平,第二行有键被按下,否则输出ROW[1:3]=001,记录行号。假设是第一行有键被按下(row=0),即输出ROW[1:3]=100,再将管脚方向改为ROW1输出,ROW2输入,ROW3输入,保持ROW1输出高电平,此时读ROW2和ROW3,若ROW[3:2]=00,则K1被按下(col=0);若ROW[3:2]=01,则K2被按下(col=1);若ROW[3:2]=10,则K3被按下(col=2)。计算公式keynum=row*3+col。假设K3被按下则row=0,col=2键值应该为keynum=0*3+2=2。驱动分析:一、文件中包含的函数列表//硬件操作函数

4、:staticvoidunmaskkey(void)//开启键盘中断staticvoidmaskkey(void)//关闭键盘中断staticvoidsep4020_key_setup(void)//初始化中断staticvoidwrite_row(intindex,intHighLow)staticintReadCol(void)voidrow_input(intx)intread_col(intx)staticintkeyevent(void)staticintsep4020_request_irqs(void)//向内核申请中断,并将中断服务子程序注册进去staticvoidsep4

5、020_free_irqs(void)//告诉内核释放硬件中断staticvoidkey_timer_handler(unsignedlongarg)staticirqreturn_tsep4020_key_irqhandler(intirq,void*dev_id,structpt_regs*reg)//驱动与操作系统接口函数staticintsep4020_key_open(structinode*inode,structfile*filp)staticssize_tsep4020_key_read(structfile*filp,char__user*buff,size_tsize,

6、loff_t*ppos)staticssize_tsep4020_key_write(structfile*filp,constchar__user*buf,size_tsize,loff_t*ppos)staticintsep4020_key_release(structinode*inode,structfile*filp)staticint__initsep4020_key_init(void)staticvoid__exitsep4020_key_exit(void)module_init(sep4020_key_init);module_exit(sep4020_key_exit

7、);MODULE_AUTHOR("Leexiang");MODULE_LICENSE("GPL");8二、函数层次关系sep4020_key_fopssep4020_key_readsep4020_key_writesep4020_key_opensep4020_key_releasekey_dev->buf[]sep4020_key_irqhandlerkey_timer_handlerread_colkeyevent

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。