【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汉字显示的全字库方式,推荐你们熟练掌握本章节的函数用法。

相关文章
相关标签/搜索