S3C2440按键中断驱动程序的设计

S3C2440按键中断驱动程序的设计

ID:41032804

大小:133.00 KB

页数:20页

时间:2019-08-14

S3C2440按键中断驱动程序的设计_第1页
S3C2440按键中断驱动程序的设计_第2页
S3C2440按键中断驱动程序的设计_第3页
S3C2440按键中断驱动程序的设计_第4页
S3C2440按键中断驱动程序的设计_第5页
资源描述:

《S3C2440按键中断驱动程序的设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、S3C2440按键驱动的设计(内核2.6.30.4)下图为S3C2440的按键连接电路图:在开始设计程序之前介绍一下与Linux设备中断处理程序相关的知识。首先是申请与释放IRQ的APIrequest_irq()和free_irq(),request_irq()的原型为:intrequest_irq(unsignedintirq,void(*handler)(intirq,void*dev_id,structpt_regs*regs),unsignedlongirqflags,constchar*devname,void*dev_id);irq是要申请的硬件中断号;h

2、andler是向系统登记的中断处理函数,是一个回调函数,中断发生时,系统调用这个函数,dev_id参数将被传递;irqflags是中断处理的属性,若设置SA_INTERRUPT,表明中断处理程序是快速处理程序,快速处理程序被调用时屏蔽所有中断,而慢速处理程序不屏蔽;若设置SA_SHIRQ,则多个设备共享中断;dev_id在中断共享时会用到,一般设置为这个设备的device结构本身或者NULL。free_irq()的原型为:voidfree_irq(unsignedintirq,void*dev_id);下面我就开始写驱动程序,源码如下(详解在源码后面说明):#incl

3、ude#include#include#include#include#include#include#include#include#include#include#include#include

4、latform_device.h>#include#include#defineDEVICE_NAME"IRQ-Test"structbutton_irq_desc{intirq;intpin;intpin_setting;intnumber;char*name;};staticstructbutton_irq_descbutton_irqs[]={{IRQ_EINT1,S3C2410_GPF1,S3C2410_GPF1_EINT1,0,"KEY1"},/*K1*/{IRQ_EINT4,S3C2410

5、_GPF4,S3C2410_GPF4_EINT4,1,"KEY2"},/*K2*/{IRQ_EINT2,S3C2410_GPF2,S3C2410_GPF2_EINT2,2,"KEY3"},/*K3*/{IRQ_EINT0,S3C2410_GPF0,S3C2410_GPF0_EINT0,3,"KEY4"},/*K4*/};staticvolatilecharkey_values[]={'0','0','0','0'};staticDECLARE_WAIT_QUEUE_HEAD(button_waitq);staticvolatileintev_press=0;stati

6、cirqreturn_tirq_interrupt(intirq,void*dev_id){structbutton_irq_desc*button_irqs=(structbutton_irq_desc*)dev_id;intdown;down=!s3c2410_gpio_getpin(button_irqs->pin);if(down!=(key_values[button_irqs->number]&1)){key_values[button_irqs->number]='0'+down;ev_press=1;wake_up_interruptible(&but

7、ton_waitq);}returnIRQ_RETVAL(IRQ_HANDLED);}staticinttq2440_irq_open(structinode*inode,structfile*file){inti;interr=0;for(i=0;i

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

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

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