硬汉嵌入式论坛

 找回密码
 立即注册
查看: 17082|回复: 9
收起左侧

尝试STM32-V2, V3上移植无操作系统的 emWin

[复制链接]

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-12-14 14:46:54 | 显示全部楼层 |阅读模式
ewWin 的库来源于 Keil MDK 4.54 。    http://www.armbbs.cn/forum.php?mod=viewthread&tid=216
实验步骤:直接将 GUI_CM3.lib 文件加入工程,然后编写一个简单的函数:
void emWinTest(void)
{    int i=0;
   
    GUI_Init();
    GUI_DispString("Hello world!");
   
    while(1)
    {
        GUI_DispDecAt( i++, 20,20,4);
        if (i > 9999)
        {
            i = 0;
        }
    }
}


然后编译,在连接的时候会报错:(需要授权才能使用使用这个Lib)
linking...
.\Flash\Obj\output.axf: Error: L9937E: RL-ARM is not allowed with this license



看来MDK 4.54 需要添加相应的License才能编译使用。
我切换回 4.13a版本的MDK 进行编译,可以编译了,没有授权提示。

下面是连接告警:

emWin-Lib.PNG

从告警信息来看,上面缺少的函数就是我们需要针对具体硬件实现的函数。
回复

使用道具 举报

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2012-12-14 18:55:27 | 显示全部楼层
版主的这些错误好解决
1. LCD_X_Config :
    这个是针对具体的屏做的,这个最关键,搞对了,emWin就能跑起来。
    在后面的回复详细说一下这个问题。
2. GUI_X_Config:
    用于申请动态内存的。
3. 用于实现延时的函数,不使用延时,函数里面什么都不写也可以的。
   void  GUI_X_Delay (int period)
   int  GUI_X_GetTime (void)
   void GUI_X_ExecIdle (void)
  如果使用的话,用版主bsp_timer文件里面的全局变量,这样就可以的
extern __IO int32_t g_iRunTime;
int GUI_X_GetTime(void)
{
//   return ((int)OSTimeGet());
    return g_iRunTime;
}
void GUI_X_Delay(int ms) {
//   int tEnd = OS_TimeMS + ms;
//  while ((tEnd - OS_TimeMS) > 0);
    int tEnd =  g_iRunTime + ms;
    while ((tEnd -  g_iRunTime) > 0);
}
4. 下面的函数,如果不使用系统的话,在GUIConf.h文件里面
#define        GUI_OS        0       设置成0的话,就是不使用OS,这样这几个函数的错误也就没了
                                                    既然版主不用OS,那么就设置成0
void  GUI_X_InitOS (void)
void  GUI_X_Lock (void)
void  GUI_X_Unlock (void)
U32  GUI_X_GetTaskId (void)
void GUI_X_WaitEvent (void)
void GUI_X_SignalEvent (void)
5 . 下面的函数用于键盘接口
static  void  CheckInit (void)
void GUI_X_Init (void)
int  GUI_X_GetKey (void)
int  GUI_X_WaitKey (void)
void  GUI_X_StoreKey (int k)
6.下面的文件夹里面有支持UCOS RTX  embOS  还有裸机的时候用到的文件。
D:\\Program Files\\keil4.23\\ARM\\Segger\\emWin\\Sample\\
版主用的是裸机,那么用这个文件就可以的。GUI_X. 这个是不使用OS的文件
天天向上
回复

使用道具 举报

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2012-12-14 19:37:47 | 显示全部楼层
emWin移植过两次,一直没有移植成功。
如果是官方文件里面有支持的驱动文件,还是很好弄的,如果不支持的话,需要自己写,自己写就很麻烦,
比如这个SPFD5420,emWin虽然支持了,但是找不到相应的文件,后来找到文件了,里面什么都没有。
现在最新的5.18 好像支持的型号多了点,不知道KEIL 4.60版本里面
带的是不是这个版本
,有待验证!!


1. 关键看这个文件手册里面的这一章 Display drivers  在29章左右的章节里面(5.16版本手册)。
第一列:对应的文件或文件夹  第二列支持的型号(虽然写着支持了,但是没有对应的文件,就是有了,
里面就写了个函数名,函数里面什么都没有)


后面还有很多支持的型号。
如果没有支持的型号,那么就使用这个

这些文件都在文件夹
emWin5.16\\5.16\\emWin\\Sample\\LCDConf
天天向上
回复

使用道具 举报

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2012-12-14 19:38:21 | 显示全部楼层
上面的方法我都尝试了,就是没有成功,悲催
天天向上
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
 楼主| 发表于 2012-12-14 23:08:19 | 显示全部楼层
显示器驱动用自定义的驱动。emWin提供了一个范本:

参照 GUIDRV_Template.c 文件实现自己的显示驱动。

/* 定义一个新的驱动程序(对象) :  GUI_DEVICE_API 结构体变量 */
const GUI_DEVICE_API GUIDRV_Template_API = {
    // Data
    DEVICE_CLASS_DRIVER,

    // Drawing functions
    _DrawBitmap,
    _DrawHLine,
    _DrawVLine,
    _FillRect,
    _GetPixelIndex,
    _SetPixelIndex,
    _XorPixel,

    // Set origin
    _SetOrg,

    // Request information
    _GetDevFunc,
    _GetDevProp,
    _GetDevData,
    _GetRect,
};

实现这个结构中的所有成员函数即可。

挂载这个驱动程序:
void LCD_X_Config(void)
{
    GUI_DEVICE * pDevice;

    /* 配置主图层(第1层) */
    pDevice = GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, COLOR_CONVERSION, 0, 0);

。。。。
刚研究清楚,还没写完驱动。过2天再继续...
回复

使用道具 举报

20

主题

55

回帖

20

积分

初级会员

积分
20
发表于 2012-12-15 12:20:46 | 显示全部楼层
非常感谢版主的提示,emWin 5.16 成功移植出来了
今天太开心了,相当开心,以后能用emWin做出更加华丽的界面


就是官方的DEMO太大 800多K,开来得上F4才能跑这个DEMO
60EUEAE_G[MZ}I_)Y1{[ZD4.jpg
天天向上
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
 楼主| 发表于 2012-12-15 14:09:24 | 显示全部楼层
你的动作够快!    我还在整理底层驱动代码...

看到这个消息,我也很开心。说明emWin的驱动结构分析结论是正确的。

我会抽空做些简单的emWin例子,并完善底层驱动
(1)自动适应3寸、4.3寸、7寸屏。
(2)支持4.3寸的双图层显示 (硬件支持,不用太可惜了); 不过RA8875带7寸屏,不支持双缓冲
(3)支持竖屏
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2013-1-9 17:50:16 | 显示全部楼层
版主,

      你好!

      你这个结构体的函数实现能分享一下吗?
      我也在弄EMWIN,我的邮箱地址是huangxi_hans@163.com
回复

使用道具 举报

2

主题

13

回帖

2

积分

新手上路

积分
2
发表于 2013-6-21 10:29:27 | 显示全部楼层
实验步骤:直接将 GUI_CM3.lib 文件加入工程

楼主能具体的说下怎么操作的吗,还有怎么把 emWin 加入到工程当中?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106923
QQ
发表于 2013-6-21 10:31:35 | 显示全部楼层

回 q翔飞云端 的帖子

q翔飞云端:实验步骤:直接将 GUI_CM3.lib 文件加入工程

楼主能具体的说下怎么操作的吗,还有怎么把 emWin 加入到工程当中? (2013-06-21 10:29) 
参考这个
http://www.armbbs.cn/forum.php?m ... 582&fpage=2
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-10 09:11 , Processed in 0.335840 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表