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