注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

深海精灵

水里的一滴油,透明地飘零在空气中。。。

 
 
 

日志

 
 
关于我

神秘诡谲,令人费解。可以很执着,也可以很破坏。冰冷,沉默。渴望单纯,渴望自由。躲在文字的背后,用心聆听世界,用直觉洞察世情。

网易考拉推荐

ucGUI入门——ucGUI-ucOS-STM32-TFT触摸屏  

2011-09-14 11:58:41|  分类: ucGUI |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

  该篇以入门的角度介绍 GUI的移植过程,不作深入研究,只求以最快速度应用起来。

  选用芯片STM32F103VET6(512Flash/64KRAM),开发平台IAR540,系统包括TFT彩屏(ILI9325),电阻式触摸屏(AD7843),使用 OS操作系统 GUI3.90系统。ILI9325配置及操作系统的移植在之前的文章中有介绍,在此就不详细说明了。

  先简单说明一下软件包里用到的文件。软件包解压后有三个文件夹。核心文件在\Start\GUI里。     GUI入门—— GUI- OS-STM32-TFT触摸屏 - 深海精灵 - 深海精灵    GUI入门—— GUI- OS-STM32-TFT触摸屏 - 深海精灵 - 深海精灵    GUI入门—— GUI- OS-STM32-TFT触摸屏 - 深海精灵 - 深海精灵 

  在完全不明白文件含义和内存够大时,可把文件全部放入项目中,另外加入配置Config和GUI_X两个文件夹,如图:

               GUI入门—— GUI- OS-STM32-TFT触摸屏 - 深海精灵 - 深海精灵
  Config里的文件在\Start\Config可找到,GUI_X里的文件可以\Sample\GUI_X找到。
  把文件加入项目后就可以开始进行配置了,在头文件里加入"GUI.h” ,在项目option里加入编译时包含文件的路径,这些就不细说了,讲讲具体的配置过程。
(一)GUIConf.h——GUI基本配置
#define GUI_OS                        (1)  /* 支持系统*/
#define GUI_SUPPORT_TO H         (1)  /*支持触摸屏 */
#define GUI_SUPPORT_UNICODE       (1)  /* 支持ASCII/UNICODE 字符 */
#define GUI_DEFAULT_FONT          &GUI_Font6x8  /* 默认字体*/
#define GUI_ALLOC_SIZE          5000  /* 动态存储器大小*/
#define GUI_WINSUPPORT              1  /* 是否使用窗体控制*/
#define GUI_SUPPORT_MEMDEV        1  /* 是否使用存储设备*/
#define GUI_SUPPORT_AA              1
(二)配置LCD
(1)LCDConf.h
#define LCD_XSIZE          (240)   /* LCD宽 */
#define LCD_YSIZE          (320)   /* LCD高*/
#define LCD_BITSPERPIXEL   (16) /* 位数  8位/16位 */
#define LCD_CONTROLLER   9325
#define LCD_SWAP_RB     1       // 红蓝反色
 
(2)ILI9325_ gui.c——GUI和ILI9325.c的函数接口
#define BKCOLOR LCD_BKCOLORINDEX
#define   COLOR LCD_COLORINDEX
 
#if (LCD_CONTROLLER == 9325)
int LCD_L0_Init(void)

  TFT_Init();
  return 0;
}
void LCD_L0_SetPixelIndex(int x, int y, int PixelIndex)
{  // 设定指定点颜色
  TFT_PaintPoint(x,y,COLOR);
}
unsigned int LCD_L0_GetPixelIndex(int x, int y)
{  // 获取指定点颜色
  return TFT_GetPoint(x,y);
}
void LCD_L0_XorPixel(int x, int y)
{
  LCD_PIXELINDEX Index = TFT_GetPoint(x,y);
  TFT_PaintPoint(x,y,LCD_NUM_COLORS-1-Index);
}
void LCD_L0_DrawHLine  (int x0, int y,  int x1)
{
  TFT_PaintLine(x0,y,x1,y,LCD_COLORINDEX);
}
void LCD_L0_DrawVLine  (int x, int y0,  int y1)
{
  TFT_PaintLine(x,y0,x,y1,LCD_COLORINDEX);
}
void LCD_L0_FillRect(int x0, int y0, int x1, int y1) {
#if !LCD_SWAP_XY
  for (; y0 <= y1; y0++) {
    LCD_L0_DrawHLine(x0,y0, x1);
  }
#else
  for (; x0 <= x1; x0++) {
    LCD_L0_DrawVLine(x0,y0, y1);
  }
#endif
}
………………………………(以下省略)
 
(三)GUI_X_OS.c——配置操作系统
  这个文件从Sample中拷过来基本都不用修改,只改了一下延时的函数。
void GUI_X_ExecIdle (void)
{
  OSTimeDly(50);    //    原来是OS_X_Delay(1);
  }
 
(四)触摸屏配置
(1)GUITouchConf.h
#define GUI_TOUCH_AD_LEFT  0  
#define GUI_TOUCH_AD_RIGHT  240
#define GUI_TOUCH_AD_TOP  0  
#define GUI_TOUCH_AD_BOTTOM  320
#define GUI_TOUCH_SWAP_XY    0
#define GUI_TOUCH_MIRROR_X   0
#define GUI_TOUCH_MIRROR_Y   0
(2)GUI_X_Touch.c——GUI和AD7843.c的接口函数
void GUI_TOUCH_X_ActivateX(void) {
}
void GUI_TOUCH_X_ActivateY(void) {
}
int  GUI_TOUCH_X_MeasureX(void) {
 u16 X = 0;
 X = AD7843_X(); 
return (X);
}
int  GUI_TOUCH_X_MeasureY(void) {
 u16 Y = 0;
 Y = AD7843_Y();
  return (Y);
}
  注意触摸屏的坐标需要校准,要把采集到的AD值转换成与LCD屏相对应的坐标。
 
  底层驱动配置完后,就可以开始做上层应用了。
  在\ GUI-V3-90a\ GUI390a\Sample\ gui394_sample里有很多例子,随便选一下C文件放入项目中。
  在创建任务时创建两个任务
static void AppTaskCreate(void)
{
 INT8U  err;
OSTaskCreate(MainTask,
                    (void *)0,
                    &TASK1_STK[TASK1_STK_SIZE - 1],
          TASK1_PRIO);
 OSTaskNameSet(TASK1_ID, "Task1-MAIN", &err); 
 
OSTaskCreate(Task_Key,
                    (void *)0,
                    &TASK_KEY_STK[TASK_KEY_STK_SIZE - 1],
                    TASK_KEY_PRIO);
 OSTaskNameSet(TASK_KEY_ID, "Task-KEY", &err);  
}
 
  MainTask函数在sample例子里,按键响应函数如下:
void Task_Key(void *pdata)
{  
    AD7843_Ini();
  while(1)
  {
    OSTimeDlyHMSM(0,0,0,10);
    GUI_TO H_Exec(); 
  }
}
 
  至此,就基本完成,可以编译调试了。
  以dialog_slidercolor.c为例子,稍微修改了窗体的大小和显示的坐标,调试效果如下图:
         GUI入门—— GUI- OS-STM32-TFT触摸屏 - 深海精灵 - 深海精灵
 


  PS:鉴于该文章有较多人感兴趣,特提供源代码以供参考。该工程文件已经过测试可行,但由于是测试的初期文件,代码没有优化,请各位见谅。下载地址:http://dl.dbank.com/c0ba3pcvoz

  评论这张
 
阅读(7886)| 评论(12)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017