你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F765@216MHz刷STemWin的Demo【代码】【视频】

[复制链接]
电信工see 发布时间:2019-2-22 15:30
     本文public自《STM32F765@216MHz输出I2S试验ES9023P音频听感》链接(https://www.stmcu.org.cn/module/forum/thread-619481-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目录下,得到如下结构:
360截图20190221225911804.png
(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源码一份,建立如下目录:
STemWin目录.PNG
将源码中./inc目录下所有文件复制到inc目录下;
将./Config目录下,如下图选中的文件,复制到Config目录下,并将LCDConf_FlexColor_Template.c和LCDConf_FlexColor_Template.h改名为LCDConf.c和LCDConf.h:
STemWin目录1.PNG
将./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中检查下各种宏都开启
GUIConf.h.PNG

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

(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效果:



      作者未使用OS,通过CubeMX建立的标准HAL工程,按照惯例,双手奉上,供大家取用:
【附件,工程压缩包】
工程为.7z压缩包,下载后请删除多余.zip后缀,再解压
Cube7.7z.zip (6.03 MB, 下载次数: 17)
收藏 2 评论1 发布时间:2019-2-22 15:30

举报

1个回答
Kevin201707 回答时间:2019-5-18 11:27:23
点赞

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版