新闻中心

EEPW首页 > 光电显示 > 设计应用 > 基于ARM7支持触摸屏和实时操作系统的开发与应用

基于ARM7支持触摸屏和实时操作系统的开发与应用

作者:李广荣 宗文波 韩建超 杨丹 于海滨 刘锏泽 北京卫星制造厂时间:2011-02-22来源:电子产品世界收藏

  mC/GUI及与操作系统的接口

本文引用地址:http://www.eepw.com.cn/article/117094.htm

  mC/GUI是运行于操作系统之上的程序,它既需要与操作系统协调,又需要与各种输入/输出设备协调,即通过输入设备接收用户请求,通过输出设备发送微处理器的处理结果。因此,mC/GUI的接口主要包括两个:与操作系统的接口和与输入/输出设备的接口,这也正是在移植mC/GUI的过程中所要解决的关键问题。mC/GUI与mC/OS-II结合应用时通过上锁和解锁来解决资源互斥的问题,其过程是通过在关键区域入口设置GUI_X_Lock()以获得专一访问权,用完后在出口处设置GUI_X_Unlock()让出资源,达到多个GUI任务对同一数据在关键区域内访问的互斥。

  在mC/GUI移植到mC/OS-II的过程中,需要利用操作系统的资源来实现GUI所需要的功能,即利用μC/OSII提供的时间管理、任务管理和资源共享机制来实现μC/GUI中相应的功能,具体要实现以下函数的重新定义:

  (1)时间函数

  GUI_X_Delay() //延迟指定的时间段后返回

  GUI_X_ExecIdle() //视窗管理器的非堵塞函数调用

  GUI_X_GetTime() //返回当前

  系统的时间,以毫秒为单位

  (2)内核接口函数

  GUI_X_InitOS() //初始化内核

  接口模块

  GUI_X_GetTaskID() //返回一个

  当前任务/线程唯一的32位标识符

  GUI_X_Lock() //给GUI上锁

  GUI_X_UnLock() //解锁GUI

  GUI_X_Log() //返回调试信息

  (3)LCD底层驱动程序

  要使mC/GUI能够在目标系统上运行,首先要对mC/GUI进行配置和修改,也就是移植。移植工作主要是指对配置头文件中的宏定义根据具体情况进行修改,包括LCD宏和LCD控制器宏。使用mC/GUI库函数时,必须在主函数前调用头文件“gui.h”,并根据需要做适当的修改。值得注意的是,在此文件的预定义语句中,必须将GUI_SUPPORT_TOUCH设为1。如果需要在屏幕上显示中文,除了添加中文字库到工程中外,还需要将GULDEFAULT_FONT设为&GULFontHZ12,HZ12代表使用的中文字体。如果需要在mC/GUI的控件中使用中文,也需要在控件的预定义语句中作相应的修改。由于芯片X内部集成了LCD控制器,LCD底层驱动程序主要是设计与LCD屏相关的参数以及其特殊的控制寄存器,主要包括以下的参数和寄存器:

  #define SCR_XSIZE (640)

  //LCD水平尺寸

  #define SCR_YSIZE (240)

  //LCD垂直尺寸

  #define LCD_XSIZE (640)

  //LCD水平分辨率

  #define LCD_YSIZE (240)

  //LCD垂直分辨率

  #define ARRAY_SIZE_COLOR (SCR_XSIZE/1*SCR_YSIZE)

  //LCD水平与垂直比例

  #define HOZVAL_COLOR (LCD_XSIZE*3/8-1)

  //LCD水平字节尺寸

  #define SCR_XSIZE (640)

  //LCD水平尺寸

  #define SCR_XSIZE (640)

  //LCD水平尺寸

  寄存器的定义根据不同的微处理器和LCD颜色、尺寸等来定义,这里以X说明:

  rLCDCON1=(0)|(2<<5)|(MVAL_USED<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_COLOR<<12);

  rLCDCON2=(LINEVAL)

  |(HOZVAL_COLOR<<10)|(10<<21);

  rLCDSADDR1= (0x3<<27)|(((U32)frameBuffer>>22)<<21)|M5D((U32)frameBuffer>>1);

  rLCDSADDR3= (LCD_XSIZE/2)|(((SCR_XSIZE-LCD_XSIZE)/2)<<9);



关键词: 触摸屏 ARM7 S3C44B0

评论


相关推荐

技术专区

关闭