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

【经验分享】STM32H7+ST7735+STEMWIN移植过程分享

[复制链接]
STMCU小助手 发布时间:2021-12-28 22:00
1. 简介
最近搞了一块STM32H743的开发板,自带TFT-1.8寸的液晶屏,一直听说STemWin功能强大,想要体验一把。奈何从未移植过STemWin,下意识的感觉还是有点困难,尤其是在网上找了一番关于STemWin的移植教程之后,发现给小白看的教程实在太少,SPI接口的教程更少。因此将自己移植STemWin的过程分享出来,供大伙参考一下。

2.环境

硬件
MCU信息:STM32H743
TFT屏幕信息:TFT-1.8寸液晶屏(分辨率:160xRGBx128;驱动IC:ST7735S;通讯接口:SPI)

软件
HAL库信息:STM32Cube_FW_H7_V1.6.0(在使用STM32CubeMX生成STM32H7工程时会提示下载,目录在:C:\Users$username$\STM32Cube\Repository\STM32Cube_FW_H7_V1.6.0)
STemWin信息:下载完上述的HAL库之后,STemWin也已经下载OK,具体位置如下:C:\Users$username$\STM32Cube\Repository\STM32Cube_FW_H7_V1.6.0\Middlewares\ST

20201030102024935.png


3.移植
3.1 移植前准备
开发板提供了TFT-1.8寸LCD的SPI驱动Demo,屏幕可以正常使用,我是基于该工程进行的移植。重点关注Demo中的以下几个函数,函数名可能跟我提供的有所出入,具体视自己的LCD驱动代码而定。

LCD_Init(void) --------------------------- SPI驱动代码,以及LCD的初始化
LCD_WriteCmd(uint8_t cmd)---------LCD写命令
LCD_WriteData(uint8_t data)---------LCD写数据
工程目录中,如果有lcd.c,lcd.h,gui.c,gui.h,请先将文件重命名,并更改工程文件,并保证编译之后运行依然OK。
3.2 开始移植
将整个STemWin目录拷贝到工程目录下:

20201030103730118.png


打开LCD Demo的工程文件,将STemWin下必要的文件添加进工程,具体文件以及路径如下:

STemWin/Config/GUIConf.c
STemWin/Config/GUIConf.h
STemWin/Config/GUIDRV_Template.c
STemWin/Config/LCDConf_FlexColor_Template.c
STemWin/Lib/STemWin_CM7_wc16_ARGB.a
STemWin/OS/GUI_X.c
添加完成之后,工程目录结构中如下:

20201030125619112.png


将STemWin_CM7_wc16_ARGB.a设置为库文件,具体配置方法如下:

20201030125657442.png


修改工程的头文件包含路径,增加以下几个路径:

20201030123144456.png


3.3 修改代码
3.3.1 修改LCDConf_FlexColor_Template.c
找到XSIZE_PHYS和YSIZE_PHYS,并修改为实际LCD的分辨率

20201030124826997.png


修改LCD_X_Config(void),具体修改为

20201030125311598.png


修改LCD_X_DisplayDriver(void),加入我们自己的LCD屏的初始化函数。

2020103013012870.png


修改一下几个函数,该方法根据具体使用的LCD确定,本例程使用的是SPI通讯的LCD屏幕,指令和数据均为 8 bit

LcdWriteReg(U16 Data) —> LcdWriteReg(U8 Data)
LcdWriteData(U16 Data) —> LcdWriteData(U8 Data)
LcdWriteDataMultiple(U16 * pData, int NumItems) —> LcdWriteDataMultiple(U8 * pData, int NumItems)

20201030130326151.png


3.3.2 修改GUIDRV_Template.c
找到 ,加入LCD的画点函数,该函数由LCD驱动 Demo提供,需要根据自己的LCD驱动代码来进行添加。

20201030131338659.png


3.3.3 修改GUConf.c
修改GUI使用的SDRam大小

20201030132052116.png


3.3.4 新建一个空文件 LCDConf.h

20201030132227734.png


3.3.5 由于采用的是RGB格式的LCD屏,因此需要修改GUI_ConfDefaults.h,否则可能会以BGR的方式显示。

2020103013351178.png


3.3.6 修改stm32h7xx_it.c中的SysTick_Handler函数,加入一下代码,由于GUI_Delay会使用到OS_TimeMS,因此如果不加该段代码,GUI_Delay将无限延时

20201030133633194.png


4 验证
在main方法中,包含头文件GUI.h,并加入测试代码

20201030134315259.png


实际显示效果:

20201030134823222.png


5 总结
对于一名没有用过STemWin的小白来说,移植还算顺利,比想象中的要Easy一些,中途参考了各方教程,并结合自己的理解,完成了这一次移植。本次移植采用的是GUIDRV_Template_API的方式,后来也有使用GUIDRV_FLEXCOLOR的方式移植了一下,这个后续有空再补。



收藏 评论0 发布时间:2021-12-28 22:00

举报

0个回答

所属标签

相似分享

官网相关资源

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