在触屏驱动的基础上,添加定时器轮询机制,驱动初始化时,一并初始化定时器, 在第一次tc中断里面开启定时器并且关闭了tc中断, 并在定时器函数里面判断按键状态,如确定此时按键还是按下状态,就启动adc, 开始adc记次的中断,在adc次数到达之后,再次启动定时器,并且将触摸屏重新设置成tc等待中断模式,这样在定时器函数里面可以判断按键是否抬起,进而是结束本次按键并开启tc中断还是继续计数所按下的键值。
这里一共留下了两个参数可以设置,一个是键按下后间隔多长时间扫描一次,即定时器的间隔时间, 另一个是扫描键值需要多少次ad转换,即adc中断的记次数。
此处奇怪: 按常理来说读取ADCDAT0的按键状态应该在等待中断模式下,但是我在定时器里面读的时候,提前设置成等待中断模式就不行, 但是在ADC中断函数退出时设置就有效,奇怪!
request_irq(, , , ,"name", id)
free_irq(, id);
id需要成对出现!