【海東青電子原創(chuàng)文章,轉載請注明出處:http://www.lxweimin.com/p/6e491347b19e】
最近,ST將TouchGFX升級到了4.13版本,與之前的4.10版本相比,做了較大改動,簡化了創(chuàng)建應用的流程,使之更趨于自然、流暢。4.13版本是一個完整的軟件包,包括TouchGFX Desinger和用于CUBEMX的插件包,其中Designer不是單獨提供下載的(至少目前是這樣)、而是打包在上述CUBEMX的插件擴展包中。4.13版本的開發(fā)依賴于新版的STM32CUBEMX。
實驗環(huán)境:
1、開發(fā)板:官方的? STM32F746G-DISCO。
2、軟件:STM32CubeMX V5.6.0
? ? ? ? ? ? ? ?? X-CUBE-TOUCHGFX V4.13.0
? ? ? ? ? ? ? ?? IAR EWARM V8.32
(一)安裝
1、升級CUBEMX至V5.6.0
啟動CUBEMX:
下載完成后,CUBEMX更新至最新版本:
回到CUBE的主界面,安裝插件包:
CUBE的擴展包在選項卡的 STMicroelectronics 中:
安裝完畢后,TouchGFX Generator將在CUBEMX中用于自動生成與TouchGFX有關的HAL代碼。上面下載的擴展包中,含有TouchGFX Designer的安裝包。找到擴展包在磁盤上的安裝目錄:
雙擊上面的msi文件、按照提示安裝即可。
(二)創(chuàng)建TouchGFX應用
啟動CUBEMX,選擇F7的746G-DISCO板子,本文的重點是描述TouchGFX 4.13 版的功能,不對DRAM、LTDC、QSPI的配置做詳細說明,這里采取了偷懶的辦法,使用CUBEMX對板子的所有外設自動做初始化:
圖片的存儲格式,我們使用16-bit的RGB565格式。修改DMA2D(加速引擎):
LTDC:
配置FREERTOS,注意,defaultTask的堆棧空間(初始值是128)必須給一個較大的數(shù)值,這里取值 4096:
這里可以看到新版CUBEMX與舊版的區(qū)別:TouchGFX不再被當作Middleware了,而是搬家到了CUBE的擴展包,點擊 Additional Software:
在彈出窗口中,勾選 Graphics:
點擊 OK 后,CUBE頁面左下方新添一項:Additional Software,點擊 STMicroelectronics X-CUBE-TOUCHGFX 4.13.0、并設置:
其中粉紅色的 Dependencies 有個帶叉的小圓圈,是警告:有參數(shù)沖突了;后面會處理(警告比錯誤等級低、有時候也可以不處理)。
注意 Buffer Location,選擇 By Address,內存地址與FMC、LTDC中配置的相同。
現(xiàn)在來處理那個警告:RGB565格式時,不需要PA和CA。這里PA、CA是LTDC中與透明度Alpha有關的參數(shù),見下圖:
如上圖配置 LTDC中的兩個 Blending Factor(不使用Alpha參數(shù),因為RGB565格式中沒有Alpha變量),警告消失了:
最后,檢查一下時鐘配置:
生成IAR代碼:
彈出窗口:
詢問是否打開IAR工程,這里先不打開,選擇 Open Folder,準備啟動TouchGFX Designer設計一個簡單界面:
進入 Src 子目錄:
雙擊 .part 文件,啟動Designer:
選擇 Blank UI,或直接Cancel,進入空白設計界面,先放置一個Box 作為背景:
再添加一個Text Area:
點擊右上角的 Generate Code,生成與TouchGFX界面有關的代碼:
生成結束,退出Designer,Src目錄下增添了不少東東:
進入EWARM目錄,雙擊 Project.eww,啟動IAR:
編譯:
編譯通過,燒寫目標板看看結果如何:
OMG,nothing!
通過與舊版TouchGFX生成的代碼做比較,發(fā)現(xiàn)5.6版CUBEMX自動生成的FMC初始化代碼中,沒有包含對DRAM初始化的命令代碼。在main.c中補充代碼:
增加函數(shù):MX_SDRAM_InitEx,完成對片外RAM的初始化,重新編譯、下載:
仍然沒有出現(xiàn)我們希望的圖片,但屏幕不再是全黑,可以判斷是DRAM初始化起了作用,內存在正常工作了,只是內存中的數(shù)據不對,----設計的圖片數(shù)據沒有正確加載到內存中。還需要做下面處理:
在FREERTOS的任務中,添加一個 TouchGFX的啟動函數(shù):MX_TouchGFX_Process(),再次編譯、燒寫:
結果正確!
從以上過程中可以看到,4.13版的TouchGFX開發(fā)過程流暢了許多(而且,生成的VS模擬器代碼也可以正常運行,之前的版本貌似有bug)!
附:
關于?MX_TouchGFX_Process 的添加,請參考:《TouchGFX4.13移植及編程指南 - 源碼分享》,感謝原作者!!