最新教程下載:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429php
本章節爲你們講解GUIX外置主題,字庫和圖庫到外部SPI Flash的方法。算法
20.1初學者重要提示數組
20.2下載算法存放位置(操做前必看)app
20.3 GUIX Studio生成bin格式資源文件框架
20.4 添加bin格式資源文件到功能並加載到SPI Flash函數
20.5 加載SPI Flash內容到動態內存並安裝主題和字庫學習
20.6 方法一:內部Flash和SPI Flash程序分別下載注意事項測試
20.7 方法二:內部Flash和SPI Flash程序同時下載字體
20.8 實驗例程設計框架優化
20.9 實驗例程
20.10 總結
(注:例子下載地址 http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 )
編譯例子:V6-025_SPI Flash的MDK下載算法制做,生成的算法文件位於此路徑下:
生成算法文件後,須要你們將其存到到MDK安裝目錄,有兩個位置能夠存放,任選其一,推薦第2種:
GUIX Studio的設置和第7章移植章節的界面同樣,你們能夠直接使用例子V7-2007_GUIX Studio Template(RG565)作修改。
下面爲你們講解如何將此界面設置的主題,字庫和圖片存到外部SPI Flash中。
打開菜單中的主題設置選項:
取消靜態定義前的對勾:
打開菜單中的主題設置選項:
取消靜態定義前的對勾:
選擇生成全部文件:
配置以下:
點擊生成後,能夠看到生成的資源文件是bin格式的。
爲了方便將bin文件添加到MDK工程中,咱們這裏使用小軟件B2C.exe將其轉換爲C格式文件(此軟件已經放到本章配套例子V6-2023_GUIX Studio Font Theme and Picture Load From SPI Flash裏面)。
轉換後生成的文件爲guiapp_resources.c :
將GUIX Studio生成的3個文件和第1步中的guiapp_resources.c都添加到工程中:
爲了防止MDK優化文件guiapp_resources.c,須要你們配置MDK的Linker選項:
下面將GUIX資源文件下載到SPI Flash,須要你們先在這裏添加SPI Flash地址範圍:
而後設置資源文件到外部SPI Flash:鼠標右擊文件guiapp_resources.c,選擇Options。
加載函數使用咱們前面移植章節在App_SysFunction.c文件中定義的函數:memory_allocate
VOID *memory_allocate(ULONG size) { VOID *memptr; if (tx_byte_allocate(&memory_pool, &memptr, size, TX_NO_WAIT) == TX_SUCCESS) { return memptr; } return NULL; }
加載方法以下,注意動態內存是否夠加載:
uint8_t *buf; GX_UBYTE *root_address; extern const unsigned char _acguiapp_resources[204562UL + 1]; buf = memory_allocate(sizeof(_acguiapp_resources)); sf_ReadBuffer(buf, 0, sizeof(_acguiapp_resources)); root_address = (GX_UBYTE *)buf;
主題和字庫加載實現以下:
GX_THEME *theme = GX_NULL; INT theme_id = 0; GX_STRING **language_table = GX_NULL; GX_UBYTE *root_address; /* 加載主題 */ gx_binres_theme_load(root_address, theme_id, &theme); guiapp_display_table[0].theme_table = (const GX_THEME **)&theme; /* 加載字體 */ gx_binres_language_table_load_ext(root_address, (GX_STRING ***)&language_table); guiapp_display_table[0].language_table = (GX_CONST GX_STRING **)language_table; guiapp_display_table[0].language_table_size = 1; guiapp_display_table[0].string_table_size = 4;
這裏特別注意language_table_size = 1和string_table_size = 4從那裏來的,這個是由guiapp_resources.h文件中以下的兩個定義決定的:
#define DISPLAY_1_STRING_TABLE_SIZE 4 #define DISPLAY_1_LANGUAGE_TABLE_SIZE 1
配置方法以下,注意這裏必定要夠大,不然會提示算法文件沒法加載:
僅加載SPI Flash算法文件:
全編譯工程,點擊這裏一鍵下載:
下載成功效果(會提示沒有0x08000000地址的算法,不用管,由於咱們沒有添加內部Flash算法):
僅加載內部算法文件:
全編譯工程,點擊這裏一鍵下載:
下載成功效果(會提示沒有0xC0000000地址的算法,不用管,由於咱們沒有添加SPI Flash算法):
內部Flash和SPI Flash的算法文件都加載進來:
同時下載會提示以下錯誤,也就是校驗的時候沒有經過,實際測試程序已經正常運行了,你們能夠不用理會:
或者簡單些,你們不勾選校驗也能夠的:
不放心的話,就繼續還用上面小節的分步下載。
本章例程的重點是加載外部SPI Flash中的內容(GUX Studio生成)到SDRAM。
(注,若是是電阻屏,須要作觸摸校準,校準方法看本教程附件章節A)
配套例子:
本章節配套了以下兩個例子供你們移植參考:
GUIX Studio生成的代碼在硬件平臺實際運行的工程,含有MDK版本工程。
GUIX Studio工程模板,設計界面後,生成的文件可直接添加到MDK平臺使用。
實驗目的:
實驗內容:
App Task Start任務 :啓動任務,這裏用做BSP驅動包處理。
App Task MspPro任務 :消息處理,這裏用做LED閃爍。
App Task UserIF任務 :按鍵消息處理。
App Task GUI任務 :GUI應用任務。
App Task STAT任務 :統計任務。
App Task IDLE任務 :空閒任務。
GUIX System Thread :GUI系統任務。
System Timer Thread任務:系統定時器任務。
實驗效果:
GUIX Studio的界面設計以下:
串口打印任務執行狀況:
MDK AC5和AC6工程能夠串口打印任務執行狀況:按開發板的按鍵K1能夠打印,波特率 115200,數據位 8,奇偶校驗位無,中止位 1:
本章節主要爲你們講解了GUIX漢字顯示的全字庫方式,推薦你們熟練掌握本章節的函數用法。