最近搞了一塊STM32H743的開發板,自帶TFT-1.8寸的液晶屏,一直聽說STemWin功能強大,想要體驗一把。奈何從未移植過STemWin,下意識的感覺還是有點困難,尤其是在網上找了一番關於STemWin的移植教程之後,發現給小白看的教程實在太少,SPI接口的教程更少。因此將自己移植STemWin的過程分享出來,供大夥參考一下。
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
開發板提供了TFT-1.8寸LCD的SPI驅動Demo,屏幕可以正常使用,我是基於該工程進行的移植。重點關注Demo中的以下幾個函數,函數名可能跟我提供的有所出入,具體視自己的LCD驅動代碼而定。
將整個STemWin目錄拷貝到工程目錄下:
打開LCD Demo的工程文件,將STemWin下必要的文件添加進工程,具體文件以及路徑如下:
添加完成之後,工程目錄結構中如下:
將STemWin_CM7_wc16_ARGB.a設置爲庫文件,具體配置方法如下:
修改工程的頭文件包含路徑,增加以下幾個路徑:
找到XSIZE_PHYS和YSIZE_PHYS,並修改爲實際LCD的分辨率
修改LCD_X_Config(void),具體修改爲
修改LCD_X_DisplayDriver(void),加入我們自己的LCD屏的初始化函數。
修改一下幾個函數,該方法根據具體使用的LCD確定,本例程使用的是SPI通訊的LCD屏幕,指令和數據均爲 8 bit
找到 ,加入LCD的畫點函數,該函數由LCD驅動 Demo提供,需要根據自己的LCD驅動代碼來進行添加。
修改GUI使用的SDRam大小
在main方法中,包含頭文件GUI.h,並加入測試代碼
實際顯示效果:
對於一名沒有用過STemWin的小白來說,移植還算順利,比想象中的要Easy一些,中途參考了各方教程,並結合自己的理解,完成了這一次移植。本次移植採用的是GUIDRV_Template_API的方式,後來也有使用GUIDRV_FLEXCOLOR的方式移植了一下,這個後續有空再補。