在單片機系統上實現圖形界面,最簡單的方法是使用串口屏,但是在體積有限的手持機應用中,串口屏顯得有點笨重了,而且板子往往不能適應需求,訂做串口屏成本又太高。這就需要使用GUI框架來完成圖形界面。在單片機領域的GUI框架有:ucguiSTemWin/emwin)、TouchGFXGuiLiteLittlevGL等。

emwin提供的更多是一些較底層的函數(如:畫線、畫圓),而且不能拖控制項,做出來的界面更接近像素時代的產物。在emwin的開發中,要想顯示圖片,需要把圖片轉成bmp格式,再用BmpCvt轉成數組,最後才用emwin的函數去調用這個數組,這是比較麻煩的。

TouchGFX都可以很好的解決這些問題,但是只能用於STM32的單片機上。這是因為TouchGFX是ST全資子公司,目前TouchGFX 僅被授權使用在ST晶片上。

2018年7月10日,全球半導體領導者意法半導體(ST)宣布收購TouchGFX軟體的開發商和供應商Draupner Graphics,標示著TouchGFX翻開了新的篇章。ST此次收購TouchGFX,旨在為嵌入式應用提供高度先進的GUI解決方案來擴展STM32生態系統。對於雙方而言,無疑是雙贏的結果。本文章將通過一個成熟的應用,向你展示TouchGFX 強大的魅力,以及STM32做為GUI 設計平台的優勢與便利。


工欲善其事,必先利其器。
首先給出開發工具下載地址:
TouchGFX:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/touchgfxdesigner.html

STM32CubeIDE:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-ides/stm32cubeide.html

STM32CubeProgrammer:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/stm32cubeprog.html

STM32CubeMX:
https://www.st.com/content/st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-configurators-and-code-generators/stm32cubemx.html

 其次,介紹相關工具及其作用:
TouchGFX:

TouchGFX是為STM32微控制器優化的高級免費圖形軟體框架。利用STM32的圖形功能和架構,TouchGFX通過創建令人驚嘆的類似智慧型手機的圖形用戶界面,加速了事物的人機界面革命。
TouchGFX框架包括TouchGFX Designer(TouchGFXDesigner),一個易於使用、基於拖放的圖形構建PC工具,以及一個強大和優化的圖形核心TouchGFX引擎。TouchGFX結合了所見即所得模擬器和自動代碼生成,使GUI開發變得簡單。它涵蓋了從早期設計草圖到獨家最終產品的所有步驟,通過對成品原型的快速疊代。
TouchGFX Designer是一個獨立的軟體工具,允許簡單和快速的圖形評估和概念證明。TouchGFX框架,包括TouchGFX設計器,分布在STM32Cube MCU包中。它與STM32CubeMX初始化和代碼生成工具完全兼容,可以在統一的項目環境中無縫地協同開發圖形和主應用程序。


STM32CubeIDE:

STM32CubeIDE是一個多操作系統集成開發工具,是STM32Cube軟體生態系統的一部分。
STM32 CuBeIDE是一種先進的C/C++開發平台,具有STM32微控制器和微處理器的外圍配置、代碼生成、代碼編譯和調試功能。它基於Eclipse®/CDT框架和GCC工具鏈進行開發,GDB用於調試。它允許集成數百個現有插件,這些插件完成了Eclipse®IDE的功能。
STM32CubeIDE集成了STM32CubeMX的STM32配置和項目創建功能,提供了一體式工具體驗,並節省了安裝和開發時間。在選擇一個空的STM32 MCU或MPU之後,或者從預裝配的微控制器或微處理器中選擇一個單板或一個實例,創建項目並生成初始化代碼。在開發過程中,用戶可以隨時返回到外圍設備或中間件的初始化和配置,重新生成初始化代碼,而不會對用戶代碼產生影響。
STM32CubeIDE包括構建和堆棧分析器,它們為用戶提供有關項目狀態和內存需求的有用信息。
STM32CubeIDE還包括標準和高級調試功能,包括CPU核心寄存器、存儲器和外圍寄存器的視圖,以及實時變量監視、串行線查看器接口或故障分析器。

主要特點




STM32CubeProgrammer:


STM32CubeProgrammer(STM32CubeProgrammer,STM32CubeProgrammer)是一個多操作系統軟體工具,用於STM32產品的編程。
它為通過調試接口(JTAG和SWD)和引導加載程序接口(UART、USB DFU、I2C、SPI和CAN)讀取、寫入和驗證設備內存提供了一個易於使用和高效的環境。
STM32CubeProgrammer提供多種功能來編程STM32內部存儲器(如Flash、RAM和OTP)以及外部存儲器。
STM32CubeProgrammer還允許選項編程和上載、編程內容驗證和通過腳本編程實現編程自動化。
STM32CubeProgrammer提供GUI(圖形用戶界面)和CLI(命令行界面)版本。


STM32CubeMX:

STM32CubeMX是一種圖形化工具,它允許對STM32微控制器和微處理器進行非常簡單的配置,還可以通過一步一步的過程為Arm®Cortex®-M內核或Arm®Cortex®-a core生成部分Linux®設備樹。

第一步包括選擇:一個stmicroelectronics STM32微控制器、微處理器或與所需外圍設備相匹配的開發平台,或是在特定開發平台上運行的示例。
對於微處理器,第二步允許為整個系統配置GPIO和時鐘設置,並以交互方式將外圍設備分配給Arm®Cortex®-M或Cortex®A world。特定的實用程序(如DDR配置和調整)使STM32微處理器的入門變得容易。對於Cortex®-M core,配置包括與微控制器描述的步驟完全相似的附加步驟。

對於微控制器和微處理器Arm®Cortex®-M,第二步包括配置每個所需的嵌入式軟體,這要歸功於pinout衝突解決程序、時鐘樹設置助手、功耗計算器以及配置外圍設備(如GPIO或USART)和中間件堆棧(如USB或TCP/IP)的實用程序。
軟體棧和軟體棧可以擴展到stm32擴展包。stmicroelectronics或stmicroelectronics的合作夥伴軟體包可以直接從STM32CubeMX中提供的專用軟體包管理器下載,而其他軟體包則可以從本地驅動器安裝。
此外,STM32CubeMX交付中的一個獨特實用程序STM32PackCreator將幫助開發人員構建自己的增強STM32Cube擴展包。

最終,用戶將啟動與所選配置選項匹配的生成。此步驟提供了Arm®Cortex®-M的初始化C代碼,可以在多個開發環境中使用,或者為Arm®Cortex®-a提供部分Linux®設備樹。STM32CubeMX在STM32Cube中交付。

主要特點


關此Cortex-M4 系列,ST官方的開發板做的Demo示例非常炫酷,如下測試視頻,大家參考借鑑。

下面通過一個簡單的例子,展示TouchGFX的強大魅力,藉此,你可以很容易的開發對應碼錶的GUI,我們的客戶也是這樣做的。

-1.啟動界面,工程與參數配置


-2.模板選擇


-3.模板信息


-4.工程配置完成界面


-5.設計界面


-6.控制項與參數等窗口預覽



-7.控制項加載與對應關係


-8.字體控制項預覽


-9.字體控制項參數修改


-10.圖片窗口參數配置與修改


-11.模擬運行

-11-1.模擬動態運行效果:


-12.下載到目標板運行


-13.運行動態效果,由於視頻比較大,大家可以自行測試驗證。

-14.代碼與調試
源碼工程文件在,TouchGFX工程目錄下


打開後效果,STM32CubeIDE 是STM32CubeMx+STM32TrueStudio的合成版,如下截圖

工程窗口與源代碼:


至此一個簡單的示例介紹完畢。

STM32CubeMx已經集成在STM32CubeIDE中,就不再詳細介紹使用。

下面STM32CubeProgrammer,就是一個上位機燒錄軟體,可以單獨燒錄bin or Hex文件到目標板,如下截圖: