本文基于STM32F429IGT6+RGB(800*480)硬件平臺,詳細(xì)記錄了如何利用STM32CubeMX將TouchGFX移植到STM32F429IGT6,并驅(qū)動(dòng)RGB屏幕。相關(guān)軟件的安裝,可參考TouchGFX軟件安裝一文
TouchGFX的應(yīng)用框架如下圖所示:
1.?STM32CubeMX配置
STM32CubeMX主要用來配置上面所示的應(yīng)用框架圖中的硬件抽象層和中間件層
? RCC系統(tǒng)時(shí)鐘:高速外部時(shí)鐘(HSE)配置為外部晶振
??由于要使用FreeRTOS操作系統(tǒng),因此建議將HAL庫的Timebase Source從SysTick改為其他定時(shí)器,選好定時(shí)器后,系統(tǒng)會(huì)自動(dòng)配置TIM,此處設(shè)置為TIM7
? FMC設(shè)置:配置外部SDRAM來作為RGBLCD的顯存,根據(jù)自已的硬件進(jìn)行參數(shù)以及引腳配置
? DMA2D設(shè)置:激活DMA2D,配置顏色模式為RGB565,并開啟DMA2D中斷
? LTDC參數(shù)設(shè)置:根據(jù)使用的屏幕參數(shù)配置LTDC參數(shù)
? LTDC層設(shè)置:此處選擇使用1層,幀緩存地址設(shè)置為SDRAM的首地址0XC0000000
? LTDC GPIO引腳設(shè)置:根據(jù)具體開發(fā)板的引腳連接,配置GPIO,注意要講輸出速度設(shè)置為“Very High”;并開啟LTDC中斷
??時(shí)鐘樹配置:像素時(shí)鐘大小為1056*705*60/1024/1024=42M,像素時(shí)鐘最大值為42M,此處設(shè)置為33M(1056為總寬,705為總高)
??背光引腳設(shè)置:本文開發(fā)板使用PB5作為背光引腳,設(shè)置為推挽輸出
??激活CRC:TouchGFX需要開啟CRC功能
??激活FreeRTOS系統(tǒng):heap大小設(shè)置為32768字節(jié),其余默認(rèn)配置;并添加一個(gè)TouchGFX任務(wù)
??選擇Touchgfx組件包
? TouchGFX參數(shù)設(shè)置:選擇雙緩存,RGB565,開啟DMA2D加速
??生成工程代碼:最小堆棧大小設(shè)置為0X800
STM32CubeMX生成工程后,先不用打開Keil工程。若此時(shí)編譯Keil工程,會(huì)出現(xiàn)大量報(bào)錯(cuò)
2.?TouchGFX Designer界面設(shè)計(jì)
Keil工程生成后,還需要執(zhí)行Touch Designer來設(shè)計(jì)UI部分,完善工程??生成工程后,在TouchGFX目錄下有個(gè)ApplicationTemplate.touchgfx.part,點(diǎn)擊即可打開TouchGFX Designer
??拖放一些控件后,點(diǎn)擊Generate Code生成代碼后,TouchGFX相關(guān)的代碼就會(huì)自動(dòng)添加進(jìn)工程中
3. MKD-ARM Keil添加代碼
??添加SDRAM驅(qū)動(dòng)源文件和頭文件
??在fmc.c文件MX_FMC_Init()函數(shù)中添加SDRAM初始化函數(shù),將外存芯片驅(qū)動(dòng)起來
??在touchgfxhal.cpp文件中點(diǎn)亮屏幕背光
??添加相應(yīng)任務(wù)中,添加TouchGFX處理函數(shù)
4. 下載測試
??編譯無誤后,下載到開發(fā)板中
??如TouchGFX移植成功,開發(fā)板屏幕會(huì)顯示TouchGFX Designer中設(shè)計(jì)好的界面