移植准备条件
emwin官方源码
lcd屏已点亮并可正常画点画线读点
移植过程
我下载的emwin版本为STemWin5.32,打开STemWin5.32文件下,文件目录一目了然,主要看三个文件夹就够了Config、Lib
OS
将Config下的GUIConf.c、GUIDRV_Template.c、LCDConf_FlexColor_Template.c加入工程中
将lib下的STemWin532_CM0_OS_Keil.lib加入到工程中
将os下的GUI_X_OS.c加入到工程中,因为我们是加了操作系统的,所以这个文件到时候我们需要修改,我看网上别人的论坛都说这里移植GUI_X_FreeRtos.c,可是我这个源码中咋就没有GUI_X_FreeRtos.c呢,只有GUI_X_OS.c,而GUI_X_OS.c是针对CSMIS_OS层的移植,我这里又没有移植CSMIS_OS.c,这里建议大家去网上找一个GUI_X_FreeRtos.c直接加入到工程中,GUI_X_FreeRtos.c中也没有什么特别的东西,就是创建了两个信号量,用于stemwin任务间通信用,也可以直接移植GUI_X_OS.c,然后修改GUI_X_InitOS(),GUI_X_InitOS(),GUI_X_InitOS(),GUI_X_GetTaskId(),GUI_X_WaitEvent(),GUI_X_SignalEvent()这几个函数就可以了
然后包含头文件
修改部分文件,添加驱动接口函数
GUIConf.c:修改GUI_NUMBYTES大小,我这里因为用的内部ram,所以GUI_NUMBYTES我设置为1024*30,也就是30K
GUIDRV_Template.c:在_SetPixelIndex中添加打点函数,_GetPixelIndex中添加读点函数
LCDConf_FlexColor_Template.c:修改屏幕大小XSIZE_PHYS、YSIZE_PHYS、VXSIZE_PHYS、VYSIZE_PHYS,修改LCD_X_Config为
GUI_DEVICE_CreateAndLink(&GUIDRV_Template_API, GUICC_M565, 0, 0); //创建显示驱动器件
LCD_SetSizeEx (0, lcddev.width, lcddev.height);
LCD_SetVSizeEx (0, lcddev.width, lcddev.height);
根据实际情况修改GUI_Conf.h,比如是否支持触摸屏等等。。。
划重点
1:使用stemwin时要开启crc时钟,不然会出现的现象是 编译不报错,下载进去后GUI不运行,也没有进hardfault中断
2:合理分配stemwin空间大小,太小会进hardfault中断
3:测试GUI移植成功没有可以通过读取GUI_Init的返回值判断,也可以看看GUI_X_Delay是否正常使用,GUI_Init初始化后设置背景色是不生效的,原因不清楚,可以移植一个demo程序测试GUI是否移植成功
4:移植完demo后,只出现了一个鼠标而没有其他界面,后来我将创建的任务堆栈空间调大,正常运行
本文档详细记录了在STM32F103ZET6上移植FreeRTOS+emwin GUI的过程,包括移植前的准备条件,如emwin源码和LCD屏的初步配置。在移植过程中,介绍了如何修改配置文件、添加驱动接口函数,并特别强调了移植中的关键点,如CRC时钟开启、内存大小分配、错误排查方法等。
5949

被折叠的 条评论
为什么被折叠?



