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

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

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

本章節爲你們講解GUIX外置主題,字庫和圖庫到外部SPI Flash的方法。算法

21.1初學者重要提示數組

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

21.3 GUIX Studio生成bin格式資源文件框架

21.4 添加bin格式資源文件到功能並加載到SPI Flash函數

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

21.6 內部Flash和SPI Flash程序調試下載配置(重要必看)字體

21.7 實驗例程設計框架優化

21.8實驗例程ui

21.9 總結

 

 

21.1 初學者重要提示

  1.   務必看第11章學習GUIX Studio的使用方法和第12章學習GUIX Studio生成的代碼移植到硬件平臺的方法。
  2.   STM32H7驅動SPI Flash的MDK下載算法制做方法已經發布,詳見第84章。http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980
  3.   下載本章節相關例子前,務必先添加好SPI Flash的下載算法。本章使用的方法支持內部Flash和外部SPI Flash能夠同時下載。如此以來,你們能夠方便的將字庫,圖庫和主題存到外部SPI Flash,簡單易用,大大方便你們項目實戰。
  4.   本章節SPI Flash的存儲方法與上個章節的QSPI Flash的存儲方法不一樣,本章是利用GUIX Studio生成的bin文件存到SPI Flash。固然,QSPI Flash也能夠採用此方法,但SPI Flash不能夠採用QSPI Flash的存儲方法,由於STM32H7驅動SPI Flash不支持內存映射模式。

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

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

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

 

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

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

 

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

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

 

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

21.3.1        設置GUIX主題非靜態定義

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

 

取消靜態定義前的對勾:

 

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

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

 

取消靜態定義前的對勾:

 

21.3.3        將資源文件生成bin格式

選擇生成全部文件:

 

配置以下:

 

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

 

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

 

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

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

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

 

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

 

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

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

 

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

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

 

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

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

 

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

 

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

21.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;

21.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

21.6 內部Flash和QSPI Flash程序調試下載配置(重要必看)

將下面兩個地方配置後,就能夠像使用內部Flash同樣使用SPI Flash進行程序下載了。注意這裏必定要夠大,不然會提示算法文件沒法加載:

 

咱們這裏是將其加到DTCM中,即首地址爲0x20000000,你們也能夠存儲到任意其它RAM地址,只要空間還夠加載算法文件便可。推薦使用AXI SRAM(地址0x24000000),由於這塊RAM空間足夠大。

若是要下載程序到內部Flash和外部SPI Flash裏面,須要作以下配置,兩個下載算法都要添加進來:

 

21.7 實驗例程設計框架

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

 

21.8 實驗例程

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

配套例子:

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

  •   V7-2026_GUIX Font Theme and Picture Load From SPI Flash

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

  •   V7-2027_GUIX Studio Font Theme and Picture Load From SPI Flash

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

實驗目的:

  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:

 

21.9 總結

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

相關文章
相關標籤/搜索