触摸屏驱动(基于mini2440)

驱动路径:drivers/input/touchscreen/s3c2410_ts.c

在static int __init s3c2410ts_init(void)函数中注册了两个中断

1.if (request_irq(IRQ_ADC, stylus_action, IRQF_SHARED|IRQF_SAMPLE_RANDOM,
  "s3c2410_action", dev))

2.if (request_irq(IRQ_TC, stylus_updown, IRQF_SAMPLE_RANDOM,
   "s3c2410_action", dev))

中断处理函数stylus_action和stylus_updown。当点击触摸屏时进入该函数,在该函数中启动ad转换,转换完成就触发中断进入stylus_action在stylus_action中读取数据。

 

首先来看一下stylus_updown函数

 

 

下面开一下touch_timer_fire是怎么个玩法

注意:当第一次按下时,count==0,启动ad,当转换完成将触发中断,进入stylus_action中断处理函数,好家伙来看一下哦

 接下来就得看一下touch_timer在忙些什么请看招。。。。。。。。。。。

static struct timer_list touch_timer =
  TIMER_INITIALIZER(touch_timer_fire, 0, 0); 重新初始化

相当于又执行了touch_timer_fire(0);

此时count==4,my ladygaga 现在知道怎么回事了吧。。。。

 

想一想:如果要实现按键的时候点亮背光,隔一段时间没按键自动熄灭背光该怎么搞呢?

1.首先当然是先配置一下背光的引脚了(假设与GPG4相连)

    在s3c2410_ts_connect()中添加s3c2410_gpio_cfgpin(S3C2410_GPG4, S3C2410_GPG4_OUTP);

2. 编写背光控制函数

 static void off_backlight(unsinged long data)  //熄灭背光

  {

             s3c2410_gpio_setpin(S3C2410_GPG4,0);
 }

static struct timer_list  backlight_control=TIMER_INITIALIZER(off_backlight,0,0);

 

3.修改touch_timer_fire函数

下面是修改后的代码

 

 

 

 

ok!!!完美的句号!!

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值