文档章节

tq2440触摸屏学习笔记(转)

天嵌科技
 天嵌科技
发布于 2016/03/02 13:53
字数 637
阅读 7
收藏 0
点赞 1
评论 0

   硬件平台:TQ2440

  触摸屏检测方法可以分两种:

  1.检测按下、弹起两个状态时的x y坐标值;

  以检测按下状态是读取x y坐标值为例 实现代码如下

  1. void Init_Touchpanel(void)  

  2. {    

  3.     ClearPending(BIT_ADC);  

  4.     rSUBSRCPND|=BIT_SUB_TC  ;  

  5.     //清adc中断 触摸屏中断  

  6.   

  7.     rADCDLY=40000; //ADC转换间隔 (1/3.6864M)*50000=13.56ms  

  8.     //Normal conversion mode:ADC Start or interval delay 0~65535  

  9.       

  10.     rADCCON=(1<<14)+(ADCPRS<<6);   //ADCPRS En, ADCPRS Value  

  11.     //使能预分频器 预分频值 ADCPRS(9) AD转换器频率=gclk / (9+1)   

  12.   

  13.     rADCTSC=0xd3;  //Wfait,XP_PU,XP_Dis,XM_Dis,YP_Dis,YM_En  

  14.     //ADC触摸屏控制寄存器  检测手写笔按下的中断信号 YM输出驱动有效 YP输出无效 XM输出禁止 XP输出驱动禁止  

  15.     // XP上啦使能 adc正常转换模式 等待中断模式  

  16.   

  17.     pISR_ADC = (int)AdcTsAuto;  

  18.     //指定adc中断服务程序   

  19.   

  20.     rINTMSK=~BIT_ADC;       //ADC Touch Screen Mask bit clear  

  21.     rINTSUBMSK=~(BIT_SUB_TC);  

  22.     //使能中断 当触摸笔按下时 触发INT_TC中断  

  23. }  

  24.   

  25. //触摸屏中断函数  

  26. void __irq AdcTsAuto(void)  

  27. {  

  28.     //ADCDAT0[15]==1 触摸笔未按下  

  29.     //ADCDAT0[15]==0 触摸笔按下  

  30.     if(rADCDAT0&0X8000)  

  31.         return ;  

  32.     rINTMSK |= (BIT_ADC);     

  33.     //禁止adc中断  

  34.     rSUBSRCPND|=BIT_SUB_TC ;  

  35.     //禁止adc的子中断  

  36.   

  37.     rADCTSC=(1<<3)|(1<<2);         //Pull-up disable, Seq. X,Y postion measure.  

  38.     //xp上拉禁止 自动顺序测量x y位置  

  39.   

  40.     rADCCON|=0x1;                   //start ADC  

  41.   

  42.     while(rADCCON & 0x1);       //check if Enable_start is low  

  43.     //adc一旦开始 将自动使ADCCON[0]=0  

  44.       

  45.     while(!(rADCCON & 0x8000));        //check if EC(End of Conversion) flag is high, This line is necessary~!!  

  46.     //adc结束时,ADCCON[15]==1  

  47.           

  48.     while(!(rSRCPND & (BIT_ADC)));  //check if ADC is finished with interrupt bit  

  49.     //等待ADC结束(不管后级中断是否传递 adc完成后 此处应该被置位)  

  50.       

  51.     point.x = (rADCDAT0&0x3ff);  

  52.     point.y = (rADCDAT1&0x3ff);  

  53.     //获取x y方向的adc值 更新坐标点  

  54.   

  55.     Uart_Printf("XP=%04d, YP=%04dn",point.x, point.y);    //X-position Conversion data              

  56.   

  57.     ClearPending(BIT_ADC);  

  58.     rSUBSRCPND|=BIT_SUB_TC  ;  

  59.     //清adc中断  

  60.       

  61.     Init_Touchpanel();  

  62.     //重新初始化触摸屏  

  63. }  

  2.检测在按下~弹起两个状态中间的x y坐标值 定时检测并更新坐标;

  实现:

  a 将adc 触摸屏接口设置为检测按下触摸笔中断;

  b 在adc按下触摸笔中断函数中 将adc的中断服务程序重新指定为弹起触摸笔中断函数;

  c 在adc按下触摸笔中断函数中 启动定时器定时进行ADC 采集XY坐标值 或在每次读取坐标值的时候进行ad转换 获取坐标值;

  d 在adc弹起触摸笔中断函数中 关闭定时器 停止采集x y坐标;

  感谢博主s_a_n_的分享!


© 著作权归作者所有

共有 人打赏支持
天嵌科技
粉丝 4
博文 135
码字总数 40355
作品 0
广州
基于platform总线的中断(按键)字符设备驱动设计

1、platform简介 为了理解platform总线设备驱动模型的实际运用,我首先分析了基于S3C2410的看门狗驱动实现过程,我本着将自己学过的知识在温习一遍的态度,完成了基于platform平台总线的外部...

长平狐 ⋅ 2012/09/03 ⋅ 0

基于ARM的多终端自助打印系统

这是以前做的一个创新项目。《基于ARM的多终端自助打印系统》。是和控制工程学院的建斌同学和仪器与电子学院的培松同学一起做的。 最后产品可以完成微信客户端扫码打印。感觉构思不错。现在把...

Linkerist ⋅ 2017/12/01 ⋅ 0

Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日)

Windows8/Silverlight/WPF/WP7/HTML5周学习导读(1月28日-2月3日) 本周Windows 8开发学习资源更新 本周Silverlight学习资源更新 本周Windows Phone开发学习资源更新 本周WPF学习资源推荐 本周...

冷秋寒 ⋅ 2013/02/06 ⋅ 0

Lind.DDD.Repositories.Redis层介绍

之前已经发生了 大叔之前介绍过关于redis的文章,有缓存,队列,分布式pub/sub,数据集缓存以及仓储redis的实现等等,而今天在Lind.DDD的持久化组件里,redis当然也有一席之地,作为当今最红...

mcy247 ⋅ 2017/12/07 ⋅ 0

嵌入式开发,如何配置busybox sendmail来发送邮件

我用的开发板是tq2440, 系统自带了busybox sendmail 请问如何在ARM/Linux环境下配置sendmail,使其可以发送邮件

FieldThomas ⋅ 2012/09/03 ⋅ 1

Pixelbook刚发布 谷歌又下单生产新款可拆卸机型

据《电子时报》北京时间10月11日报道,谷歌公司在近期发布了笔记本电脑Pixelbook,后者搭载可以360度折叠的触摸屏。上游供应链消息称,Pixelbook由广达电脑生产。而且,谷歌已在近期向广达下...

凤凰网科技 ⋅ 2017/10/11 ⋅ 0

Qt应用程序执行错误总结

目录 前言 在经历了各种交叉编译Qt被虐之后,现在总算进入了Qt的应用程序的编写,但是运行还是有错误。特此记录下来,以防重复造轮子!! 学习!分享!感谢! 错误列表 错误一: 解决方法1:...

simonforfuture ⋅ 2017/12/14 ⋅ 0

gslx680.c触摸屏驱动

转:http://blog.csdn.net/zgkxzx/article/details/56980769 前言 gslx680电容触摸屏是一种目前Android嵌入式设备中比较常用的触摸屏类型。这里我们以Exynos4412为Android bsp平台,移植一款...

WXXGoodJob ⋅ 2017/08/29 ⋅ 0

大叔推荐博客索引

以下是我的所有推荐文章,其中多半是文章系列,并且这个索引会在以后过程中进行追加,所以,各位看到的,永远都不是最新的,呵呵! 大叔推荐文章系列 DotNetCore跨平台~文章索引~永久更新(...

mcy247 ⋅ 2017/12/05 ⋅ 0

Spring MVC 4 - Hello World Tutorial

学习笔记,转自:http://www.tuicool.com/articles/uUBNni

fangdongya ⋅ 2014/02/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

在java中读取文件(也支持读取jar中的文件)

getClass().getResourceAsStream("文件名.格式"); 这个方法是用于获取当前类所在目录下的文件;需要将文件放到和当前类同一个包下面 比如我有个类在 com.test这个包下, 要读取一个test.jpg的图...

太黑_thj ⋅ 55分钟前 ⋅ 0

CentOS 7 源码编译安装 MySQL 5.7记录

没事瞎折腾,本来可以yum安装,却偏偏去要编译源码。 1. 安装依赖包 1). 安装cmake等依赖 # yum install cmake ncurses ncurses-devel bison bison-devel 2). 安装boost 1.59.0 # wget htt...

admin_qing ⋅ 57分钟前 ⋅ 0

tcp/ip详解-链路层

简介 设计链路层的目的: 为IP模块发送和接收IP数据报 为ARP模块发送ARP请求和接收ARP应答 为RARP模块发送RARP请求和接收RARP应答 TCP/IP支持多种链路层协议,如以太网、令牌环往、FDDI、RS-...

loda0128 ⋅ 今天 ⋅ 0

spring.net aop代码例子

https://www.cnblogs.com/haogj/archive/2011/10/12/2207916.html

whoisliang ⋅ 今天 ⋅ 0

发送短信如何限制1小时内最多发送11条短信

发送短信如何限制1小时内最多发送11条短信 场景: 发送短信属于付费业务,有时为了防止短信攻击,需要限制发送短信的频率,例如在1个小时之内最多发送11条短信. 如何实现呢? 思路有两个 截至到当...

黄威 ⋅ 昨天 ⋅ 0

mysql5.7系列修改root默认密码

操作系统为centos7 64 1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2、重启 mysqld 服务:systemctl restart mysql...

sskill ⋅ 昨天 ⋅ 0

Intellij IDEA神器常用技巧六-Debug详解

在调试代码的时候,你的项目得debug模式启动,也就是点那个绿色的甲虫启动服务器,然后,就可以在代码里面断点调试啦。下面不要在意,这个快捷键具体是啥,因为,这个keymap是可以自己配置的...

Mkeeper ⋅ 昨天 ⋅ 0

zip压缩工具、tar打包、打包并压缩

zip 支持压缩目录 1.在/tmp/目录下创建目录(study_zip)及文件 root@yolks1 study_zip]# !treetree 11└── 2 └── 3 └── test_zip.txt2 directories, 1 file 2.yum...

蛋黄Yolks ⋅ 昨天 ⋅ 0

聊聊HystrixThreadPool

序 本文主要研究一下HystrixThreadPool HystrixThreadPool hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java /** * ThreadPool used to executed {@link Hys......

go4it ⋅ 昨天 ⋅ 0

容器之上传镜像到Docker hub

Docker hub在国内可以访问,首先要创建一个账号,这个后面会用到,我是用126邮箱注册的。 1. docker login List-1 Username不能使用你注册的邮箱,要用使用注册时用的username;要输入密码 ...

汉斯-冯-拉特 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部