OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6623|回复: 2

正点原子emWin例程的改进建议

[复制链接]

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-1-13
在线时间
8 小时
发表于 2016-1-13 11:32:56 | 显示全部楼层 |阅读模式
1金钱
      买了战舰和探索者,在搭建嵌入式开发平台,我在使用正点原子例程的过程中,积累了一些经验,下面是对于emwin部分的改进建议,看看对不对。
       以  EMWIN实验23 汉字显示(FLASH外置字库)  为例子,其他例子也是差不多吧。

       首先是emWin的多任务移植,应该存在BUG,下面是定义了信号量指针,,然后创建信号量,,但是这些信号量内存在哪里分配呢?  我搜索了工程,,都没有看到哦。这样的话,这三个信号量指针是悬空的。

       static OS_SEM         *DispSem;         
       static OS_SEM         *EventSem;  
       static OS_SEM        *KeySem;

       void GUI_X_InitOS(void)
      {
           OS_ERR err;

           OSSemCreate ((OS_SEM*        )DispSem,       
                 (CPU_CHAR*        )"Disp_SEM",
                 (OS_SEM_CTR)1,               
                 (OS_ERR*        )&err);

          OSSemCreate ((OS_SEM*        )EventSem,       
                 (CPU_CHAR*        )"Event_SEM",
                 (OS_SEM_CTR)0,               
                 (OS_ERR*        )&err);
      }

       我自己的移植代码是这样的,,定义成静态变量,,然后再创建。
/*********************************************************************
*
* Global data
*/
static OS_MUTEX                osMutex;
static OS_SEM                osSemaphore;

/* Init OS */
void GUI_X_InitOS(void)
{
        OS_ERR  err;

        /* Create Mutex lock */
        //osMutexDef(MUTEX);

        /* Create the Mutex used by the two threads */
        //osMutex = osMutexCreate(osMutex(MUTEX));
        OSMutexCreate (&osMutex, "GUI_osMutex", &err);

        /* Create Semaphore lock */
        //osSemaphoreDef(SEM);

        /* Create the Semaphore used by the two threads */
        //osSemaphore= osSemaphoreCreate(osSemaphore(SEM), 1);
        OSSemCreate (&osSemaphore, "GUI_osSemaphore", 1, &err);
}


      此外。。emwin对中文的支持,,我采用原子的代码,,几乎显示不了,,可能是因为我的emWin版本太高?
      我改进的移植在这里:
      emWin & STemWin & uCGUI 的中文支持
      http://www.openedv.com/thread-66273-1-1.html

      此外,触摸屏的移植,最好采用通用型触摸屏API,可用于任何类型的驱动(模拟、数字等)。
      而模拟触摸屏驱动方式,,还要实现GUI_TOUCH_X_ActivateX,GUI_TOUCH_X_ActivateY,GUI_TOUCH_X_MeasureX,GUI_TOUCH_X_MeasureY四个函数,感觉没那么简洁。

最佳答案

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
54
金钱
54
注册时间
2016-1-13
在线时间
8 小时
 楼主| 发表于 2016-1-13 11:32:57 | 显示全部楼层
八度空间 发表于 2016-1-13 12:43
谢谢分享!发成分享帖子即可,,不必发求助贴了

首次使用本论坛
回复

使用道具 举报

120

主题

7877

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12010
金钱
12010
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-1-13 12:43:33 | 显示全部楼层
谢谢分享!发成分享帖子即可,,不必发求助贴了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 16:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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