基于ARM触摸屏的实现.doc

上传人:h**** 文档编号:139941 上传时间:2018-07-10 格式:DOC 页数:21 大小:70KB
下载 相关 举报
基于ARM触摸屏的实现.doc_第1页
第1页 / 共21页
基于ARM触摸屏的实现.doc_第2页
第2页 / 共21页
基于ARM触摸屏的实现.doc_第3页
第3页 / 共21页
基于ARM触摸屏的实现.doc_第4页
第4页 / 共21页
基于ARM触摸屏的实现.doc_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、ucos II+ucGUI+s3c2410+LCD+触摸屏整合 作者 :佚名 来源 :不详 录入 :Admin 更新时间: 2008-8-18 14:57:54 点击数: 240 【字体: 】 环境: ads2.2 ARM9 s3c2410 注意:由于编译器( ads1.2 或 2.2)对全局变量初始化为 0 的不完全支持,有时必须手动初始化为 0,切记! 一、 ucos II 移植到 ARM9 s3c2410 可从官网下载移植代码,基本无需改动。 在 os_cpu_a.s 中的函数 UCOS_IRQHandler 中的 bl OSIntEnter 和 bl C_IRQHandler 之间插入

2、如下代码( 见邵贝贝,第 2 版,第 104 页的说明: L3.18(4) ): ldr r0, =OSIntNesting ldrb r0,r0 cmp r0,#1 bne XX ldr r0,=OSTCBCur ldr r1,r0 str sp,r1 ; store sp in preempted taskss TCB XX 二、 ucGui 390 移植到 ARM9 s3c2410 1. Lcd驱动 : 1) 画点函数: 对 dm2410 实验板上的 lcd,左上为原点( 0, 0),函数如下: void LCD2410_SetPixel(int xp, int yp, U16 colo

3、r, int dindex) *(pLCDBuffer565 + SCREEN_WIDTH*yp + xp) = color; 为了达到更快的显示速度,别忘了开启 Cache! 2) LCD 控制器的初始化,对 2410 函数如下: int LCD2410_Init(void) if(!isLcdInit) InitLcdPort(); InitLcdRegs(); isLcdInit = 1; return 0; return 1; void InitLcdPort(void) / LCD port initialize. s2410IOP-GPCUP = 0xFFFFFFFF; s2410

4、IOP-GPCCON = 0xAAAAAAAA; s2410IOP-GPDUP = 0xFFFFFFFF; s2410IOP-GPDCON = 0xAAAAAAAA; s2410IOP-GPGCON s2410LCD-LCDSADDR3=(LCD_XSIZE_TFT-LCD_XSIZE_TFT)/1)LCDINTMSK|=(3); / MASK LCD Sub Interrupt s2410LCD-LPCSEL / Disable LPC3600 s2410LCD-TPAL=0; / Disable Temp Palette s2410LCD-LCDCON1 |= 1; 其中,部分变量、常量定

5、义如下: #define LCD_XSIZE_TFT (800) #define LCD_YSIZE_TFT (480) #define HOZVAL_TFT (LCD_XSIZE_TFT-1) #define LINEVAL_TFT (LCD_YSIZE_TFT-1) #define MVAL (13) #define MVAL_USED (1) #define EACH_FRAME (0) /STN/CSTN timing parameter for LCBHBT161M(NANYA) #define WLH (3) #define WDLY (3) #define LINEBLANK (

6、1 3)填写配置文件 LCDConf.h #define LCD_XSIZE (800) /* X-resolution of LCD, Logical coor. */ #define LCD_YSIZE (480) /* Y-resolution of LCD, Logical coor. */ #define LCD_BITSPERPIXEL (16) #define LCD_CONTROLLER 1 #define LCD_SWAP_RB_0 1 2触摸屏驱动 : 触摸屏驱动计算出触摸屏的坐标( x, y),对 dm2410 实验板上的触摸屏,左下为原点,但不一定是( 0, 0)。两个

7、函数: 1) 设置中断向量,开中断: void SetTSInterrupt(void) rADCDLY = (50000); rADCCON = (1pLCD_HL = pContext-pAFont = GUI_DEFAULT_FONT; pContext-pClipRect_HL = pContext-PenSize = 1; pContext-DrawMode = GUI_DRAWMODE_NORMAL;/add pContext-TextMode = GUI_TEXTMODE_NORMAL;/add pContext-TextAlign = GUI_TA_LEFT|GUI_TA_TO

8、P;/add pContext-AA_HiResEnable = 0;/add /* Variables in WM module */ #if GUI_WINSUPPORT pContext-hAWin = WM_GetDesktopWindow(); #endif /* Variables in GUI_AA module */ pContext-AA_Factor = 3; LCD_SetBkColor(GUI_DEFAULT_BKCOLOR); LCD_SetColor(GUI_DEFAULT_COLOR); 修改如下函数为:(位于 GUIAlloc.c) void GUI_ALLOC_Init(void) . GUI_ALLOC.NumUsedBytes = 0; memset(/self aBlock0.Size = (1GUI_BLOCK_ALIGN); /* occupy minimum for a block */ . 修改如下函数为:(位于 WM.c)( New ) void WM_Init(void) if (!_IsInited) . memset(/add NextDrawWin = WM_FirstWin = WM_HWIN_NULL; .

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。