emWIN嵌入式GUI带freeRTOS操作系统移植

1、前言

        做嵌入式难免会用的界面的显示,一些简单的界面直接在液晶驱动的基础上写个简单的显示字符、汉字、画图函数即可,但若涉及到按键控制多级界面操作,自己写就太复杂了,且显示效果不佳,在自己的项目中也遇到了类似问题,所以使用第三方GUI库做UI界面设计,大大提高了效率。因为使用CPU内存资源有限,从几个小巧的GUI中选择,有uCGUI、emWIN、STemWIN,这三者的历史渊源不做过多介绍,笔者根据自己的CPU(Cortex M3内核)及RAM、ROM容量选择了emWIN,参照源自例程,在STemWIN移植成功的基础上再移植的emWIN,emWIN消耗的内存资源来自网络查到的数据,仅供参考。

emWIN嵌入式GUI带freeRTOS操作系统移植_第1张图片

2、 移植环境

STemWIN/emWIN:V5.26
freeRTOS:V10.0.0
CPU:Cortex M3内核
OLED:无触摸屏、单色

3、移植步骤

3.1、移植环境准备

1)原基于freeRTOS的基础工程(带OLED驱动程序)

2)STemWIN源文件,下载后解压找到路径:stm32cubef1\STM32Cube_FW_F1_V1.0.0\Middlewares\ST\STemWin

下载地址:https://www.st.com/en/embedded-software/stm32cubef1.html(stm32cubef1)

emWIN嵌入式GUI带freeRTOS操作系统移植_第2张图片

 3.2、向工程添加文件

emWIN嵌入式GUI带freeRTOS操作系统移植_第3张图片emWIN嵌入式GUI带freeRTOS操作系统移植_第4张图片

注:笔者左侧截图是已经更换了emWIN的lib文件 

3.3、修改工程文件

1)修改GUIConf.h文件:其中定义了是否使用操作系统、鼠标、窗口管理、默认字体等信息

emWIN嵌入式GUI带freeRTOS操作系统移植_第5张图片

2)修改 GUIConf.c文件:其中定义了所使用的内存,在这里使用freeRTOS系统的内存管理函数来为 STemWin 分配内存,所以需要加入原工程中相关的头文件SYS.h

emWIN嵌入式GUI带freeRTOS操作系统移植_第6张图片

3)修改GUIDRV_Template.c文件,主要修改SetPixelIndex(), _GetPixelIndex(), _FillRect()三个函数,其中都是和OLED驱动相关的,分别为打点函数、读点函数、填充函数

emWIN嵌入式GUI带freeRTOS操作系统移植_第7张图片

 emWIN嵌入式GUI带freeRTOS操作系统移植_第8张图片

 emWIN嵌入式GUI带freeRTOS操作系统移植_第9张图片

4)修改LCDConf_FlexColor_Template.c文件:注释掉触摸,颜色等无关函数;

 3.4移植emWIN

按上述,STemWIN的基本工作移植完成,不涉及到触摸,彩色LCD,移植工作相对简单,移植emWIN时,用emWIN中lib中的库替换掉STemWIN的lib库,再将emWin 源码中的 Include 文件夹下的所有头文件替换掉  STemWin 源码下的 inc 文件夹中的所有头文件用,emWin 源码中的头文件少了 IMAGE_Private.h 头文件, 把 STemWin 源码中的这个头文件拷贝过来, 这个头文件在显示 PNG 图片的时候会被 PNG 解码库调用的,emWin 源码中的头文件会有一个 GUIConf.h 文件,我们要把这个头文件删除掉,至此移植完成。
 

你可能感兴趣的:(emWIN)