历史上的今天

今天是:2024年09月30日(星期一)

正在发生

2021年09月30日 | S3C2440裸机------触摸屏_定时候程序优化

发布者:CaptivatingEyes 来源: eefocus关键字:触摸屏 手机看文章 扫描二维码
随时随地手机看文章

我们前面的触摸屏代码中,当我们短按一次会有一个数据输出,但是当我们长按或者滑动时并没有数据输出,我们用定时器使触摸屏支持长按,在按下时我们启动定时器,定时器间隔一段时间中断一次,然后在中断函数里面再去测量触点的XY坐标。


我们前面的定时器代码是直接在定时器中断函数里面点灯,我们应该用一个数组去做处理,当定时器中断发生时分别进入不同的函数做不同的处理。


1. timer.c

 

#include "s3c2440_soc.h"

 

#define TIMER_NUM  32

#define NULL  ((void *)0)

 

typedef void(*timer_func)(void);

 

typedef struct timer_desc {

char *name;

timer_func fp;

}timer_desc, *p_timer_desc;

 

timer_desc timer_array[TIMER_NUM];

 

 

int register_timer(char *name, timer_func fp)

{

int i;

for (i = 0; i < TIMER_NUM; i++)

{

if (!timer_array[i].fp)

{

timer_array[i].name = name;

timer_array[i].fp   = fp;

return 0;

}

}

return -1;

}

 

void unregister_timer(char *name)

{

int i;

for (i = 0; i < TIMER_NUM; i++)

{

if (!strcmp(timer_array[i].name, name))

{

timer_array[i].name = NULL;

timer_array[i].fp   = NULL;

return 0;

}

}

return -1;

}

 

 

void timer_irq(void)

{

int i;

for (i = 0; i < TIMER_NUM; i++)

{

if (timer_array[i].fp)

{

timer_array[i].fp();

}

}

}

 

 

void timer_init(void)

{

/* 设置TIMER0的时钟 */

/* Timer clk = PCLK / {prescaler value+1} / {divider value} 

             = 50000000/(49+1)/16

             = 62500

*/

TCFG0 = 49;  /* Prescaler 0 = 49, 用于timer0,1 */

TCFG1 &= ~0xf;

TCFG1 |= 3;  /* MUX0 : 1/16 */

 

/* 设置TIMER0的初值 */

TCNTB0 = 625;  /* 10Ms中断一次 */

 

/* 加载初值, 启动timer0 */

TCON |= (1<<1);   /* Update from TCNTB0 & TCMPB0 */

 

/* 设置为自动加载并启动 */

TCON &= ~(1<<1);

TCON |= (1<<0) | (1<<3);  /* bit0: start, bit3: auto reload */

 

/* 设置中断 */

register_irq(10, timer_irq);

}


2. led.c

 

#include "s3c2440_soc.h"

 

void delay(volatile int d)

{

while (d--);

}

 

 

/* 每10ms该函数被调用一次 

 * 每500ms操作一下LED实现计数

 */

void led_timer_irq(void)

{

/* 点灯计数 */

static int timer_num = 0;

static int cnt = 0;

int tmp;

 

timer_num++;

if (timer_num < 50)

return;

timer_num = 0;

 

cnt++;

 

tmp = ~cnt;

tmp &= 7;

GPFDAT &= ~(7<<4);

GPFDAT |= (tmp<<4);

}

 

int led_init(void)

{

/* 设置GPFCON让GPF4/5/6配置为输出引脚 */

GPFCON &= ~((3<<8) | (3<<10) | (3<<12));

GPFCON |=  ((1<<8) | (1<<10) | (1<<12));

 

register_timer("led", led_timer_irq);

}

 

int led_test(void)

{

int val = 0;  /* val: 0b000, 0b111 */

int tmp;

 

/* 设置GPFCON让GPF4/5/6配置为输出引脚 */

GPFCON &= ~((3<<8) | (3<<10) | (3<<12));

GPFCON |=  ((1<<8) | (1<<10) | (1<<12));

 

/* 循环点亮 */

while (1)

{

tmp = ~val;

tmp &= 7;

GPFDAT &= ~(7<<4);

GPFDAT |= (tmp<<4);

delay(100000);

val++;

if (val == 8)

val =0;

}

 

return 0;

}

关键字:触摸屏 引用地址:S3C2440裸机------触摸屏_定时候程序优化

上一篇:S3C2440裸机------触摸屏_使用定时器支持长按
下一篇:S3C2440裸机------触摸屏_利用ADC读取触摸屏坐标

推荐阅读

今天我们的机器已经能够帮助人类做很多事情,比如在工厂与人类一起工作,进行,让医生和病人实现远程连接等等。未来,有了的助力,机器人能为人们做更多的事,让人们的工作和生活更加智能和便利。 让AI注入机器人 AI技术能够在两个维度促进机器人技术的进展,推动实现未来生活的愿景。一方面是静态的,用AI提升机器的智能,比如认知能力;另一方面是...
9月26日,陕西省泛在电力物联网工程研究中心通过陕西省发改委批复并在国网西安数据中心挂牌成立,作为国网首个成立的省级泛在电力物联网工程研究中心,这是国网陕西省电力公司全面贯彻国家电网有限公司“三型两网、世界一流”发展战略,加快推进泛在电力物联网建设取得的一项重要成果。 陕西省泛在电力物联网工程研究中心由国网陕西电力牵头,与国网大...
9月28日,成都市双流区人民政府与中兴通讯股份有限公司举行中国终端项目投资合作协议签约仪式,“中国终端”项目正式落户双流区“感知成都中心"。根据合作协议,双方将在终端产品销售及结算、移动宽带互联和IoT产品等领域深入合作,并建设5G终端国产操作系统研发基地,移动互联(IoT)软件平台研发基地,合力打造5G终端,共同推进产业生态圈健康、可持续发...
谷歌今年最大的开发者大会是谷歌 I/O,在会上推出了大量新服务和对现有服务的升级。  不过,按照谷歌的体量,无法在 I/O 大会上公布所有项目,所以谷歌打算再来三场开发者峰会,分别是:Android 开发者峰会、Chrome 开发者峰会和 Firebase 峰会。  Android开发者峰会  在一篇博客文章中,谷歌确认 Android 开发峰会将于 2021 年...

史海拾趣

问答坊 | AI 解惑

快球摄像机安装

RS485通迅,最远1200M   多种控制协议,(可以根据用户要求定做协议)   7寸、9寸球罩可选   AC24V供电   内置220倍一体化摄像机   旋转范围:左右:355度,上下:90度   旋转速度:左右:12度/秒、上下:12度/秒   产品连接 ...…

查看全部问答∨

有关时序

process(clk) begin if clk\'event and clk=\'1\' then     if fs=24 then fs<="0000";     else fs<=fs+1;     end if; end if; end process; fclk<=fs(2); 请问以上程序中fclk<=fs(2)是什 ...…

查看全部问答∨

大家推荐一下好的买芯片网站

本帖最后由 ddllxxrr 于 2016-1-7 17:18 编辑 就那种到货付款的 本站强荐:185娱乐╮城.足球╮真_人.彩票齐全╮手机可投╮注任何游戏. 首次开户送10元.首存送58元.信誉绝对保证185.cc …

查看全部问答∨

黑白可视对讲系统,现在还有市场?

面对多彩缤纷的世界,大家都已经习惯了彩色,像彩色电视,彩色监视器,那么黑白可视对讲系统还有多少市场了?能分到多少粥?…

查看全部问答∨

U盘插拔式的wince终端

新买了款终端机,和以前用的很不一样。在样机上做的程序也不能跑。有很多问题请教: 1。不能实现和activesync同步,插上数据线,就像U盘一样,只显示ce里面的flash disk。 2。不能安装netcf,不能识别。查看系统是wince5.0的,处理器类型是Inge ...…

查看全部问答∨

CE5.0下更换数据采集卡,驱动问题,输入输出读写不了,求助

工控ce5.0+pcm卡,后来由于老板要更换数据采集卡,用了art2536 之前数据采集卡驱动是MmMapIoSpace+MmUnmapIoSpace使用内存空间 然后READ_PORT_UCHAR+WRITE_PORT_UCHAR使用被映射的内存地址写入物理地址 然后再位操作读取板卡信号 但是新卡art253 ...…

查看全部问答∨

大家看看为什么刷子没作用?

   HBRUSH hbr = GetSysColorBrush(RGB(50,160,210)); hdcMem = CreateCompatibleDC(hdc);     hbmMem = CreateBitmap(rcTemp.right - rcTemp.left, rcTemp.bottom - rcTemp.top, 1,           ...…

查看全部问答∨

知名美国芯片公司招聘-硬件设计工程师-上海

1. Senior Mechanical Engineer - SH Description   In this position, you will be responsible for the mechanical research and innovative design for notebook and portable PC systems CO-work with PM and/or ID and/or thermal ...…

查看全部问答∨

msp340单片机接160*80的液晶,该怎么写程序。请高手指点!急!

液晶为ST7528驱动器,用8080时序,数据口DB0~DB7接MSP430F149的P5口,改怎么写程序啊?…

查看全部问答∨

德国conextop推出世界上最小的串口服务器模块Neport

NePort系列的串口服务器模块是德国CONEXTOP公司(www.conextop.com)于2002年初发布的一款高度集成,高性能的的嵌入式设备联网服务器的RJ45产品,它以小巧的体积为客户的产品提供一套简洁、高性能且低成本的网络连接方式,利用它,任何带有标准串口 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved