【海東青電子原創(chuàng)文章替饿,轉(zhuǎn)載請注明出處:http://www.reibang.com/p/6e491347b19e】
最近翅睛,ST將TouchGFX升級到了4.13版本力喷,與之前的4.10版本相比慷妙,做了較大改動,簡化了創(chuàng)建應(yī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有關(guān)的HAL代碼挪圾。上面下載的擴展包中,含有TouchGFX Designer的安裝包逐沙。找到擴展包在磁盤上的安裝目錄:
雙擊上面的msi文件哲思、按照提示安裝即可。
(二)創(chuàng)建TouchGFX應(yīng)用
啟動CUBEMX吩案,選擇F7的746G-DISCO板子棚赔,本文的重點是描述TouchGFX 4.13 版的功能,不對DRAM徘郭、LTDC靠益、QSPI的配置做詳細說明,這里采取了偷懶的辦法残揉,使用CUBEMX對板子的所有外設(shè)自動做初始化:
圖片的存儲格式胧后,我們使用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、并設(shè)置:
其中粉紅色的 Dependencies 有個帶叉的小圓圈七婴,是警告:有參數(shù)沖突了祟偷;后面會處理(警告比錯誤等級低、有時候也可以不處理)本姥。
注意 Buffer Location肩袍,選擇 By Address,內(nèi)存地址與FMC婚惫、LTDC中配置的相同氛赐。
現(xiàn)在來處理那個警告:RGB565格式時,不需要PA和CA先舷。這里PA艰管、CA是LTDC中與透明度Alpha有關(guān)的參數(shù),見下圖:
如上圖配置 LTDC中的兩個 Blending Factor(不使用Alpha參數(shù)蒋川,因為RGB565格式中沒有Alpha變量)牲芋,警告消失了:
最后,檢查一下時鐘配置:
生成IAR代碼:
彈出窗口:
詢問是否打開IAR工程捺球,這里先不打開缸浦,選擇 Open Folder,準備啟動TouchGFX Designer設(shè)計一個簡單界面:
進入 Src 子目錄:
雙擊 .part 文件氮兵,啟動Designer:
選擇 Blank UI裂逐,或直接Cancel,進入空白設(shè)計界面泣栈,先放置一個Box 作為背景:
再添加一個Text Area:
點擊右上角的 Generate Code卜高,生成與TouchGFX界面有關(guān)的代碼:
生成結(jié)束,退出Designer南片,Src目錄下增添了不少東東:
進入EWARM目錄掺涛,雙擊 Project.eww,啟動IAR:
編譯:
編譯通過疼进,燒寫目標板看看結(jié)果如何:
OMG薪缆,nothing!
通過與舊版TouchGFX生成的代碼做比較颠悬,發(fā)現(xiàn)5.6版CUBEMX自動生成的FMC初始化代碼中矮燎,沒有包含對DRAM初始化的命令代碼定血。在main.c中補充代碼:
增加函數(shù):MX_SDRAM_InitEx,完成對片外RAM的初始化诞外,重新編譯澜沟、下載:
仍然沒有出現(xiàn)我們希望的圖片,但屏幕不再是全黑峡谊,可以判斷是DRAM初始化起了作用茫虽,內(nèi)存在正常工作了,只是內(nèi)存中的數(shù)據(jù)不對既们,----設(shè)計的圖片數(shù)據(jù)沒有正確加載到內(nèi)存中濒析。還需要做下面處理:
在FREERTOS的任務(wù)中,添加一個 TouchGFX的啟動函數(shù):MX_TouchGFX_Process()啥纸,再次編譯号杏、燒寫:
結(jié)果正確!
從以上過程中可以看到斯棒,4.13版的TouchGFX開發(fā)過程流暢了許多(而且盾致,生成的VS模擬器代碼也可以正常運行,之前的版本貌似有bug)荣暮!
附:
關(guān)于?MX_TouchGFX_Process 的添加庭惜,請參考:《TouchGFX4.13移植及編程指南 - 源碼分享》,感謝原作者K胨帧护赊!