(說明:利用 TouchGFX Designer 生成的 ioc 文件對TouchGFX項目進行配置的方法,請見《使用STM32CubeMX創建TouchGFX應用程序(一)》)
本文將講述如何在STM32CubeMX中配置TouchGFX,目標板為STM32F769I-DISCO,今天是2019年5月27日,當前用到的幾個軟件的版本是:
STM32CubeMX,V5.1.0版本。
TouchGFX Designer,V4.1.0版本。
這里強調軟件版本,是因為目前的版本在配置操作過程中,并不能如在ST中文論壇等處所看到的配置指導文件所述的那樣能成功完成配置,下文將描述出現的問題,以及解決辦法----這真不是個好辦法,只是個權宜之計(這也是自前文發布后、此文遲遲不出的原因,這一個月為了搞定這個板子的配置吃盡了苦頭),希望官方后續版本能有所改善。(并不是說軟件有bug,我不能確定,也許是本人水平有限)
好,言歸正傳,在CUBE中配置TouchGFX,關鍵步驟是LCD屏驅動部分的配置(本文不涉及觸屏,添加觸屏驅動將在下一節中介紹。跟本文要講的相比,觸屏真的是小菜一碟、非常簡單)。同時,畢竟CUBE跟 TouchGFX Designer 是兩個獨立的軟件,現在要把他們揉到一起來用,還是稍顯別扭(還沒到無縫的程度):需要先啟動CUBE,進行配置,然后第一次生成code,但不要進入IAR(或KEIL之類)的IDE,而是在CUBE中啟動TouchGFX Designer(而且,必須、只能啟動一次;否則,嗯,那就杯具了,說來話長、這里不展開了)、設計屏幕界面,然后需要再回到CUBE中,第二次生成code,然后,就可以進入IAR編譯、下載了。有點復雜?下面用圖文詳述。
為了簡化?STM32F769I-DISCO 板子的配置,我們利用 CUBE 把769板子的所有默認驅動都先自動配上:
點擊上圖 Start Project 后,彈出詢問窗:
選擇 Yes ,用默認驅動初始化769板子。
1. 保留默認配置RCC,? ?IWDG、WWDG未使用、關閉(按默認配置保留也沒關系,下同),LSE是否配置均可:
2. 保留默認配置SYS,注意時基的 TIM6 的配置(TouchGFX要求的):
3. Timers, 配置TIM7(理論上可以選擇除已經占用的TIM6之外的任何timer,這里我們使用TIM7)、關閉其他timer:
4, FMC (保留默認配置):
QUADSPI可配可不配,這里保留了系統默認的配置。
5. LTDC,重頭戲來了,769板子要求的參數如下:
請注意圖五、圖六中幾處出現 400 的地方,769的屏是800x480的,但這幾處確實要填入400、而不是800!(誰知道原因?請留言告訴我^_^)
6. DSIHOST,屏接口的第二部分:
7. DMA2D,圖像硬件加速器,保留默認配置:
8. CRC,用于計算,保留默認配置:
9. FREERTOS, 保留默認配置。
10. 最后一項:GRAPHICS:
注意圖十三中的“顯示器物理尺寸”的寬度,顯示是“400”,這是有問題的,見后。
(注意:圖十四中,Execute 按鈕是灰色的,這是因為CUBE還沒有“首次生成”代碼、此時不允許啟動TouchGFX。見圖二十二)
11. 然后,還需要修改時鐘:
至此,第一階段的配置任務完成,選擇CUBE配置文件保存目錄和文件名:
點擊 GENERATE CODE,生成代碼。彈出詢問窗:
這個跟GFX的模擬器參數配置有關,這里不必管它,選擇 Yes ,出現進度條:
代碼生成完畢,系統提示“是否打開工程”?
這里先不打開工程,點擊 Close。此時,如果打開生成代碼的目錄,可以看到:
CUBE生成了目錄 TouchGFX,但其中只有一個子目錄:
TouchGFX需要的其他文件就不是CUBE能搞定的了,需要TouchGFX Designer來生成。返回CUBE,再次進入 GRAPHICS 條目,點擊 Execute 按鈕(此時 Execute 按鈕已變為可用了)、啟動 TouchGFX Designer :
稍等片刻后,TouchGFX Designer啟動了。添加一個簡單的背景色----一個800x480的Box控件(這種背景色使用代碼實現,占用存儲空間小,可以駐留在MCU片內flash中,利于后面的IAR燒寫):
再加入一段文字、一個按鈕:
點擊上圖右上角的 Generate Code ,等待一會兒:
代碼生成后,再來看看文件目錄:
多了不少東東。
然后,關閉?TouchGFX Designer ,回到CUBE,再次用CUBE生成代碼(直接點擊圖十六中的?GENERATE CODE)。代碼生成完畢后,詢問:
這次,選擇 Open Project ,啟動IAR。然后修改文件 HW_Init.c,改為橫屏模式。:
編譯、燒寫,769板子上跑起來是這個樣子滴:
崩潰了吧!費盡九牛二虎之力,得到的不是正確的顯示呀!!!
不過,圖像很穩定,只是重復顯示了文字和按鈕,應該是屏初始化出現了一些非致命的錯誤。然后,。。。,仔細檢查配置過程吧。
。。。經過了數天的檢查,查不出配置參數有誤啊。
之后,似乎突然開了天眼,按下圖使用文本編輯器修改了CUBE配置文件(后綴為 .ioc? 的那個):
在 ioc 文件中修改、添加:
然后保存 ioc 文件,雙擊這個 ioc 文件、打開CUBE,應該能看到屏的寬度參數改為 800 了,這正是769板子上屏的正確寬度:
在CUBE中重新生成代碼,在IAR中改為橫屏顯示:
編譯、燒寫:
終于看到了正確的圖像!!
(圖三十一中的 ioc 文件修改是怎么想到的?研究一下前文《使用STM32CubeMX創建TouchGFX應用程序(一)》中的方法生成的 ioc 文件,能找到一些線索)
雖然圖像顯示正確了,然而實現過程著實費勁,解決問題的辦法貌似有點旁門左道的意味,僅供大家參考吧。下一篇將介紹《使用STM32CubeMX創建TouchGFX應用程序(三)-- 從零配置》。
補記:
昨天把CubeMX升級到了目前最新版本:
重復上面配置過程,仍然得到圖二十九的非正常圖像,仍然需要修改.ioc 文件。2019年6月18日。