3171|1

8

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

STM32F765@216MHz刷STemWin的Demo【代码】【视频】 [复制链接]

本帖最后由 Kεnny 于 2019-2-22 10:13 编辑

     本文public自《STM32F765@216MHz输出I2S试验ES9023P音频听感》链接(https://bbs.eeworld.com.cn/thread-1069926-1-1.html)

     作者的开发板使用STM32F765VIT6@216MHz,可以免费使用STemWin。至于STemWin是什么,是emWin的ST授权版本,而emWin的前世就是上古时期的ucGUI。


     说到ucGUI,那就不得不谈谈ucGUI的移植了,就跟说起高端电脑软件就不得不聊聊如何安装卸载一样,步骤如下:


(1)准备ucGUI源码,复制./Start/GUI目录、./Start/Config目录和./Sample/GUIDemo到工程目录下,将./Sample/GUI_X目录下2个文件GUI_X.c和GUI_X_Touch.c复制到Config目录下,得到如下结构:

(2)配置LCDConf.h和GUIConf.h中的参数,重定义LCD_INIT_CONTROLLER()宏


(3)实现LCDDummy.c中LCD_L0_SetPixelIndex()、LCD_L0_GetPixelIndex()方法,将GUI_X.c中的变量OS_TimeMS定时1ms增加1,到此已经ucGUI已经可以跑起来了!!


(4)优化:
        优化LCD_L0_XorPixel()、LCD_L0_DrawHLine()、LCD_L0_DrawVLine()、LCD_L0_FillRect()可以显著提高刷屏速度


(5)支持TouchPanel:
        在此工程基础上GUIConf.h中开启GUI_SUPPORT_TOUCH宏,实现GUI_X_Touch.c中GUI_TOUCH_X_MeasureX()和
GUI_TOUCH_X_MeasureY()方法,配置GUITouchConf.h中GUI_TOUCH_AD_LEFT等校准参数,并定时刷GUI_TOUCH_Exec()和GUI_Exec()



/************************************************************************************/
        扯远了,回到正题上,我们来说下STemWin的移植吧,说白了,跟ucGUI大同小异,步骤
(1)准备STemWin源码一份,建立如下目录:

将源码中./inc目录下所有文件复制到inc目录下,
将./Config目录下,如下图选中的文件,复制到Config目录下,并将LCDConf_FlexColor_Template.c和LCDConf_FlexColor_Template.h改名为LCDConf.c和LCDConf.h:


将./Lib目录下STemWin540_CM7_Keil.lib复制到lib目录下,因为本文作者使用Keil,不使用OS,不使用优化(optimization)
将./OS目录下GUI_X.c复制到os目录下
到ST的Cube包随便找个STemWin的application,将目录下的/GUIDemo整个复制到工程目录下


(2)将GUIConf.c中的GUI_NUMBYTES宏改小些,作者改为110Kbyte,原本是2Mbyte,GUIConf.h中检查下各种宏都开启



(3)LCDConf.c配置宏XSIZE_PHYS和YSIZE_PHYS为实际物理像素,作者使用320*240的TFT即改为320和240;重写LCD_X_Config()方法并在LCD_X_DisplayDriver()中追加初始化LCD的驱动函数(注意添加头文件),其他没用的就删掉,LCDConf.h中编译宏#ifndef LCDCONF_H这个都不需要改动了



(4)重点来了,GUIDRV_Template.c中实现_SetPixelIndex()、_GetPixelIndex()即可,优化_XorPixel()、_FillRect()、_DrawHLine()、_DrawVLine()、_DrawBitLine16BPP()可以显著提升刷屏速度,GUIDRV_Template.h可以不改动。将GUI_X.c中的变量OS_TimeMS定时1ms增加1。到目前为止已经可以在main()中跑Demo了

(5)支持TouchPanel:在Config目录下新建一个C文件,随便取个名,作者取为GUI_X_Touch.c,在文件中包含“GUI.h”,并实现GUI_TOUCH_X_MeasureX()和GUI_TOUCH_X_MeasureY()方法。并定时刷GUI_TOUCH_Exec(),记得要判断在初始化GUI之后再刷GUI_TOUCH_Exec(),如果没有初始化GUI就刷会死机,这就是C不支持面向对象的封装导致我们需要严格进行状态机编码,全局变量满天飞,可读性不好

(6)在GUIDemo.h中Configuration of modules to be used,选中你喜欢的Demo module,在main()中运行GUIDEMO_Main()即可

    【最后说一点,运行STemWin前需要开启CRC校验,不然无法启动】

    作者的STM32F765@216MHz开发板,LCD驱动器是ssd1289,TP芯片是xpt2046,运行STemWin刷Demo效果:


如果视频看不了,请复制链接单独查看(http://v.youku.com/v_show/id_XND ... b492547be5ab6f27398


      作者未使用OS,通过CubeMX建立的标准HAL工程,按照惯例,双手奉上,供大家取用:
【附件,工程压缩包,复制链接打开即可download
https://bbs.eeworld.com.cn/forum.php?mod=attachment&aid=NDAyODczfDcxYjU3ZWNiZjkzMjJlMWUyYmNjNDc3YjliMjg2NTYzfDE3MzczOTUzNTQ%3D&request=yes&_f=.7z




此内容由EEWORLD论坛网友Kεnny原创,如需转载或用于商业用途需征得作者同意并注明出处

此帖出自stm32/stm8论坛

最新回复

学习,慢慢消化。  详情 回复 发表于 2019-2-23 12:58
点赞 关注(2)
 

回复
举报

349

帖子

4

TA的资源

一粒金砂(高级)

沙发
 
学习,慢慢消化。
此帖出自stm32/stm8论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表