|
本文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目录下,得到如下结构:
(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效果: 如果视频看不了,请复制链接单独查看(https://v.youku.com/v_show/id_XNDA3MjE0ODc2MA==.html?x&sharefrom=android&sharekey=37b6469da8c81ab492547be5ab6f27398) 作者未使用OS,通过CubeMX建立的标准HAL工程,按照惯例,双手奉上,供大家取用: 【附件,工程压缩包】 (工程为.7z压缩包,下载后请删除多余.zip后缀,再解压)
Cube7.7z.zip
(6.03 MB, 下载次数: 17)
|
| 点赞 |
STM32
超强工具——STM32CubeMX 你会用吗?
集结出发! STM32全国研讨会系列之一:ST智能门铃中国首秀
关于STM32启动文件的几个小问题
【银杏科技ARM+FPGA双核心应用】STM32H7系列35——USB_VCP_FS
【银杏科技ARM+FPGA双核心应用】STM32H7系列28——USB_HID
粉丝分享 | 图说CRC原理应用及STM32硬件CRC外设
STM32L151进入低功耗,并由RTC唤醒的故事
[转]stm32控制NFC模块(PN532)源码(P2P,模拟卡,读写卡等
STM32G070RB+LVGL移植
微信公众号
手机版