最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429php
本章节为你们讲解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 总结
(注:例子下载地址 http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 )
编译例子:V7-065_SPI Flash的MDK下载算法制做,生成的算法文件位于此路径下:
生成算法文件后,须要你们将其存到到MDK安装目录,有两个位置能够存放,任选其一,推荐第2种:
GUIX Studio的设置和第7章移植章节的界面同样,你们能够直接使用例子V7-2007_GUIX Studio Template(RG565)作修改。
下面为你们讲解如何将此界面设置的主题,字库和图片存到外部SPI Flash中。
打开菜单中的主题设置选项:
取消静态定义前的对勾:
打开菜单中的主题设置选项:
取消静态定义前的对勾:
选择生成全部文件:
配置以下:
点击生成后,能够看到生成的资源文件是bin格式的。
为了方便将bin文件添加到MDK工程中,咱们这里使用小软件B2C.exe将其转换为C格式文件(此软件已经放到本章配套例子V7-2027_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
将下面两个地方配置后,就能够像使用内部Flash同样使用SPI Flash进行程序下载了。注意这里必定要够大,不然会提示算法文件没法加载:
咱们这里是将其加到DTCM中,即首地址为0x20000000,你们也能够存储到任意其它RAM地址,只要空间还够加载算法文件便可。推荐使用AXI SRAM(地址0x24000000),由于这块RAM空间足够大。
若是要下载程序到内部Flash和外部SPI Flash里面,须要作以下配置,两个下载算法都要添加进来:
本章例程的重点是加载外部SPI Flash中的内容(GUX Studio生成)到SDRAM。
(注,若是是电阻屏,须要作触摸校准,校准方法看本教程附件章节A)
配套例子:
本章节配套了以下两个例子供你们移植参考:
GUIX Studio生成的代码在硬件平台实际运行的工程,含有MDK AC5和AC6四个版本工程。
GUIX Studio工程模板,设计界面后,生成的文件可直接添加到MDK,IAR和GCC软件平台使用。
实验目的:
实验内容:
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汉字显示的全字库方式,推荐你们熟练掌握本章节的函数用法。