全網(wǎng)首發(fā)!RT-Thread移植TouchGFX從零開始詳細教程!
1.介紹
TouchGFX是一個圖形框架,它可以幫助用戶基于STM32創(chuàng)建出類似于當前智能手機風格的用戶界面,對于STM32的用戶,它是免費的!
RT-Thread 是一款完全由國內(nèi)團隊開發(fā)維護的嵌入式實時操作系統(tǒng)(RTOS),具有完全的自主知識產(chǎn)權。
現(xiàn)在我們就把TouchGFX和RT-Thread融合起來,保姆級教程走起!
2.開發(fā)環(huán)境準備
源碼:RT-Thread 4.0.2;工具:Env 1.2.0;軟件:Keil MDK 5.30;TouchGFX Designer 4.16.0;STM32CubeMX 6.2.0;開發(fā)板:正點原子阿波羅F429;正點原子800x480屏幕;開發(fā)系統(tǒng):Windows10;是不是覺得要準備的軟件和工具有點多,不過只要開發(fā)過【RT-Thread】的話,除了【TouchGFX Designer 4.16.0】沒有,其他應該都有的。
3.基礎工程創(chuàng)建
打開RTThread中開發(fā)板支持程序,我的路徑【E:\RTThread\rt-thread\bsp\stm32\stm32f429-atk-apollo】。
圖1
鼠標右擊該路徑下的空白處,打開Env工具,輸入【scons --dist】生成獨立的RTThread工程,生成過程大概要幾分鐘。
圖2
最終會在該目錄下生成一個【dist】目錄,進入目錄之后就是獨立的工程文件了,將這個工程文件移到方便操作的目錄下,我這里移動到了【E:\RTThread】路徑下。
圖3圖4
4.開發(fā)板硬件配置
使用【STM32CubeMX】打開如圖5的工程,需要修改工程的外設使能和管腳,由于采用的是正點原子的工程,所以很多外設會被默認打開,這里用不到的外設就將其關閉。
圖5
打開【STM32CubeMX】工程后,界面如下,綠色部分都是已經(jīng)被配置過的管腳,我們需要使用的外設有【LTDC】、【FMC】、【DMA2D】和【USART1】,同時還需要使用【CRC】組件和【TOUCHGFX】軟件包;
圖6
首先將其他外設全部關閉,其中【LTDC】、【DMA2D】、【CRC】和【TOUCHGFX】是沒有打開的,首先我們打開【DMA2D】,配置如下圖7所示:
圖7
再打開LTDC,這里需要配置參數(shù)和管腳等,下面幾個圖是配置完成后的內(nèi)容。
圖8圖9圖10圖11
接下來配置【FMC】,【FMC】連接的是【SDRAM】,需要配置參數(shù),管腳工程默認配置好了,所以不需要重新配置,下圖是配置完成后的內(nèi)容。
圖12由于【TOUCHGFX】需要用到【CRC】,所以我們先打開CRC。圖13
現(xiàn)在開始添加【TOUCHGFX】軟件包,點擊【Software Packs】->【Select Components】。
圖14
在彈出的窗口中選擇【TOUCHGFX】我這里用的是4.16.0版本,第一次使用,需要先下載安裝,點擊右下角的【OK】關閉窗口。
圖15
這時候就會彈出一個軟件包選項,開啟后可以看到【TOUCHGFX】,需要配置一下參數(shù),這里采用雙緩存,并設置為地址模式,不過這些和【RT-Thread】提供的軟件包有沖突,最終不會采用這個配置,配置如下圖15所示。
圖16
最后點擊右上角的【GENERATE CODE】生成代碼即可。
圖17
其實上面的一些外設配置沒有意義,因為【RT-Thread】會自己配置一些參數(shù),不會使用【STM32CubeMX】配置的參數(shù),不過也不影響使用,看過之后還能學習一下如何配置。
5.導入TouchGFX軟件包
在工程目錄下打開【Env】,輸入【menuconfig】命令,打開【RT-Thread】的配置界面,進入【RT-Thread online packages → multimedia packages】打開【touchgfx】軟件包。
圖18
退出并保存,返回到【Env】指令界面輸入【pkgs --update】下載軟件包,下載完成之后,在項目的根目錄下會出現(xiàn)一個【packages】目錄,這里面有【touchgfx2rtt】的軟件包了。
圖19
這里需要修改配置文件,需要【RT-Thread】的配置腳本,修改項目根目錄下的【packages\touchgfx2rtt-latest\SConscript】文件,由于有一個頭文件路徑未添加,這里直接在腳本中將它添上【guiPath = [cwd '/port']】,修改結(jié)果如下圖20所示。
圖20
我們還需要添加外設配置,需要修改【RT-Thread】的【Kconfig】文件,修改項目根目錄下的【board\Kconfig】,需要添加上【LTDC】和【LCD】的配置項,修改結(jié)果如下圖21所示。
圖21
打開配置文件,配置【RT-Thread】的外設,在【Env】命令行中輸入【menuconfig】打開配置,需要打開【SDRAM】外設,配置路徑【Hardware Drivers Config → Onboard Peripheral Drivers】。
圖22
打開屏幕相關的外設【LTDC】和【LCD】,配置路徑【Hardware Drivers Config → On-chip Peripheral Drivers】。
圖23
最后保存退出,為了讓屏幕有顯示,先打開項目根目錄下的【packages\touchgfx2rtt-latest\TouchGFX\ApplicationTemplate.touchgfx.part】,點擊菜單欄中的【Edit->Import GUI】導入下圖24中的Demo。
圖24
添加完成之后的效果如下,然后點擊右上角的按鈕生成代碼。
圖25
關閉軟件,打開【Env】命令行,輸入【scons --target=mdk5】命令,輸出MDK工程。打開MDK工程,修改【drv_lcd】文件,將【25~37】和【104~107】行注釋掉,如下圖26所示。
圖26
將項目根目錄下的【board\CubeMX_Config\Src\main.c】文件中的【SystemClock_Config】函數(shù)中的內(nèi)容覆蓋項目工程【board.c】文件中的【SystemClock_Config】函數(shù),這一步主要是將【STM32CubeMX】配置的時鐘復制到項目中去,如下圖27所示。
圖27
最后編譯下載到開發(fā)板上,效果如圖28所示。
圖28
6.總結(jié)
這次移植整體來說不是很難,但是網(wǎng)上沒有相關的教程,所以打算做關于TouchGFX和RTThread一系列的教程,當然這只是剛剛開始,后續(xù)還有觸摸、圖片字庫存儲等一系列操作,本人接觸RTThread和TouchGFX也有許久,有困難的童鞋,歡迎私信留言,承接外包~
---------------------作者:二哲科技此文章來自于21ic網(wǎng)站,著作權歸21ic所有,未經(jīng)允許禁止轉(zhuǎn)載。
▍