【STM32F429】第20章 ThreadX GUIX外置主題,字庫和圖庫到外部SPI Flash

最新教程下載:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429php

第20章       ThreadX GUIX外置主題,字庫和圖庫到外部SPI Flash

本章節爲你們講解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 總結

 

 

20.1 初學者重要提示

  1.   務必看第11章學習GUIX Studio的使用方法和第12章學習GUIX Studio生成的代碼移植到硬件平臺的方法。
  2.   STM32F429驅動SPI Flash的MDK下載算法制做方法已經發布,詳見第47章。http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255
  3.   下載本章節相關例子前,務必先添加好SPI Flash的下載算法。本章使用的方法支持內部Flash和外部SPI Flash能夠同時下載。如此以來,你們能夠方便的將字庫,圖庫和主題存到外部SPI Flash,簡單易用,大大方便你們項目實戰。

20.2 下載算法存放位置(操做前必看)

(注:例子下載地址 http://www.armbbs.cn/forum.php?mod=viewthread&tid=93255 )

編譯例子:V6-025_SPI Flash的MDK下載算法制做,生成的算法文件位於此路徑下:

 

生成算法文件後,須要你們將其存到到MDK安裝目錄,有兩個位置能夠存放,任選其一,推薦第2種:

  •   第1種:存放到MDK的STM32F4軟包安裝目錄裏面:\Keil\STM32F4xx_DFP\2.15.0\CMSIS\Flash(軟包版本不一樣,數值2.15.0不一樣)。
  •   第2種:MDK的安裝目錄 \ARM\Flash裏面。

 

20.3 GUIX Studio生成bin格式資源文件

GUIX Studio的設置和第7章移植章節的界面同樣,你們能夠直接使用例子V7-2007_GUIX Studio Template(RG565)作修改。

 

下面爲你們講解如何將此界面設置的主題,字庫和圖片存到外部SPI Flash中。

20.3.1        設置GUIX主題非靜態定義

打開菜單中的主題設置選項:

 

取消靜態定義前的對勾:


 

20.3.2        設置GUI字庫的很是靜態定義

打開菜單中的主題設置選項:


 

取消靜態定義前的對勾:


 

20.3.3        將資源文件生成bin格式

選擇生成全部文件:


 

配置以下:


 

  •   binary mode 勾上表示二進制模式。
  •   generate resource header表示生成資源文件頭文件。
  •   Binary Mode File Format:Binary 表示生成文件格式爲bin格式。

 

點擊生成後,能夠看到生成的資源文件是bin格式的。

 

20.4 添加bin格式資源文件到工程並加載到SPI Flash

20.4.1        第1步:將bin文件轉換爲C數組格式文件

爲了方便將bin文件添加到MDK工程中,咱們這裏使用小軟件B2C.exe將其轉換爲C格式文件(此軟件已經放到本章配套例子V6-2023_GUIX Studio Font Theme and Picture Load From SPI Flash裏面)。

 

轉換後生成的文件爲guiapp_resources.c :

 

20.4.2        第2步:添加GUIX Studio生成的文件到工程

將GUIX Studio生成的3個文件和第1步中的guiapp_resources.c都添加到工程中:

 

20.4.3        第3步:配置MDK,防止bin各類資源文件被優化

爲了防止MDK優化文件guiapp_resources.c,須要你們配置MDK的Linker選項:

 

20.4.4        第4步:設置GUIX資源文件到外部SPI Flash。

下面將GUIX資源文件下載到SPI Flash,須要你們先在這裏添加SPI Flash地址範圍:

 

而後設置資源文件到外部SPI Flash:鼠標右擊文件guiapp_resources.c,選擇Options。

 

20.5 加載SPI Flash內容到動態內存並安裝主題和字庫

20.5.1        第1步:加載SPI Flash中數據到動態內存

加載函數使用咱們前面移植章節在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;

20.5.2        第2步:加載主題和字庫

主題和字庫加載實現以下:

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

20.6 方法一:內部Flash和SPI Flash程序分別下載注意事項

20.6.1 第1步:下載的RAM空間要夠大

配置方法以下,注意這裏必定要夠大,不然會提示算法文件沒法加載:

 

20.6.2 第2步:加載外置SPI Flash算法並下載

僅加載SPI Flash算法文件:

 

全編譯工程,點擊這裏一鍵下載:

 

下載成功效果(會提示沒有0x08000000地址的算法,不用管,由於咱們沒有添加內部Flash算法):

 

20.6.3 第3步:加載內部Flash算法並下載

僅加載內部算法文件:

 

全編譯工程,點擊這裏一鍵下載:

 

下載成功效果(會提示沒有0xC0000000地址的算法,不用管,由於咱們沒有添加SPI Flash算法):

 

20.7 方法二:內部Flash和SPI Flash程序同時下載

內部Flash和SPI Flash的算法文件都加載進來:

 

同時下載會提示以下錯誤,也就是校驗的時候沒有經過,實際測試程序已經正常運行了,你們能夠不用理會:

 

或者簡單些,你們不勾選校驗也能夠的:

 

不放心的話,就繼續還用上面小節的分步下載。

20.8 實驗例程設計框架

本章例程的重點是加載外部SPI Flash中的內容(GUX Studio生成)到SDRAM。

 

20.9 實驗例程

(注,若是是電阻屏,須要作觸摸校準,校準方法看本教程附件章節A)

配套例子:

本章節配套了以下兩個例子供你們移植參考:

  •   V6-2023_GUIX Font Theme and Picture Load From SPI Flash

GUIX Studio生成的代碼在硬件平臺實際運行的工程,含有MDK版本工程。

  •   V6-2024_GUIX Studio Font Theme and Picture Load From SPI Flash

GUIX Studio工程模板,設計界面後,生成的文件可直接添加到MDK平臺使用。

實驗目的:

  1. 本章主要學習學習GUI全字庫,主題和圖片存儲到外部SPI Flash。

實驗內容:

  1. 共建立了以下幾個任務,經過按下按鍵K1能夠經過串口打印任務堆棧使用狀況

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:

 

20.10          總結

本章節主要爲你們講解了GUIX漢字顯示的全字庫方式,推薦你們熟練掌握本章節的函數用法。

相關文章
相關標籤/搜索