FreeRtos+emwin在STM32F103ZET6上的移植笔记二(emwin移植)

本文档详细记录了在STM32F103ZET6上移植FreeRTOS+emwin GUI的过程,包括移植前的准备条件,如emwin源码和LCD屏的初步配置。在移植过程中,介绍了如何修改配置文件、添加驱动接口函数,并特别强调了移植中的关键点,如CRC时钟开启、内存大小分配、错误排查方法等。

移植准备条件

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后,只出现了一个鼠标而没有其他界面,后来我将创建的任务堆栈空间调大,正常运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值