Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)

【STM32H7】第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)

作者头像
Simon223
发布于 2021-01-07 09:15:36
发布于 2021-01-07 09:15:36
1.2K00
代码可运行
举报
运行总次数:0
代码可运行

第20章 ThreadX GUIX汉字显示(QSPI Flash全字库)

本章节为大家讲解GUIX汉字显示的全字库方式。

20.1初学者重要提示

20.2下载算法存放位置(操作前必看)

20.3 GUIX Studio设置汉字显示

20.4 GUIX汉字显示设置

20.5 GUIX窗口任意位置汉字显示

20.6 内部Flash和QSPI Flash程序调试下载配置(重要必看)

20.7 实验例程设计框架

20.8实验例程

20.9 总结

20.1 初学者重要提示

1、 务必看第11章学习GUIX Studio的使用方法和第12章学习GUIX Studio生成的代码移植到硬件平台的方法。

2、GUIX Studio生成的汉字是采用的UTF-8编码。

3、 GUIX Studio V6.0.2设置字体语言后不能立即生效,关闭软件重新打开后解决

http://www.armbbs.cn/forum.php?mod=viewthread&tid=99661

4、 STM32H7花式玩转QSPI Flash相关章节都已经发布:

http://www.armbbs.cn/forum.php?mod=viewthread&tid=101064

这里强烈推荐看:第83章 STM32H7 的内部 Flash 和 QSPI Flash都运行程序的混合方式(强烈推荐)。

5、 下载本章节相关例子前,务必先添加好QSPI Flash的下载算法。本章使用的方法支持内部Flash和外部QSPI Flash可以同时下载,同时仿真。如此以来,大家可以方便的将全字库存到外部QSPI Flash,简单易用,大大方便大家项目实战。

20.2 下载算法存放位置(操作前必看)

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

编译例子:V7-060_QSPI Flash的MDK下载算法制作,生成的算法文件位于此路径下:

生成算法文件后,需要大家将其存到到MDK安装目录,有两个位置可以存放,任选其一,推荐第2种:

  • 第1种:存放到MDK的STM32H7软包安装目录里面:\Keil\STM32H7xx_DFP\2.6.0\CMSIS\Flash(软包版本不同,数值2.6.0不同)。
  • 第2种:MDK的安装目录 \ARM\Flash里面。

20.3 GUIX Studio设置汉字显示

GUIX Studio的设置和第18的界面差不多,效果如下:

20.3.1 为窗口添加Drawing Function

这个知识点在第13章有详细讲解,我们这里添加的函数为_cbWindow0:

20.3.2 添加中文

首先,我们要在Languages对话框添加中文语言。打开菜单Configure->Languages:

打开后的效果如下:

点击按钮Add Language:

添加后的效果如下:

这样就完成了在原来英文的基础上再添加一种语言。

20.3.3 删除英文

添加了新的语言后,删除GUIX Studio默认创建的英文,在Language Index里面选择1,然后点击Delecte Languagle:

删除后,Number of Languages语言数变成了1:

20.3.4 设置语言ID

Language ID这里,我们要选项使用Chinese[zh]

20.3.5 添加字库

在GUIX Studio的如下位置添加新的字库(推荐将此字库和GUIX Studio工程文件放到一起):

点击后,弹出的对话框如下:

1、Browse按钮用于选择字库。

2、此处推荐选择Project Relative Path相当路径。

3、设置字体高度为24点阵。

4、此处的勾选比较重要,用于添加扩展字符范围,GUIX Studio默认没有包含全角字字符。

这里将上面三个地址范围打对勾了,其中User Defined Page1范围FF00到FFEF是全角字符范围,这个范围是我们手动添加上的。其它两个勾选的地址范围是中文全字库。

5、使用1bpp,没有使用抗锯齿。

6、生成完毕后,别忘了点击保存。

20.3.6 为Text Button控件设置汉字

选中创建的BUTTON控件,设置Text内容:安富莱电子,设置Font采用我们前面创建的NotoSerifSC。

20.4 GUIX汉字显示设置

20.4.1 第1步:设相关宏定义

设置了显示汉字,函数gx_studio_display_configure的第3个参数要根据GUIX Studio的设置来选择。

  • 我们这里设置显示中文,在文件guiapp_resources.h里面会生成专门的宏:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define LANGUAGE_CHINESE 0
#define DISPLAY_1_LANGUAGE_TABLE_SIZE 1
  • 根据这个宏,修改MainTask.c文件里面函数gx_studio_display_configure的第3个参数:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
gx_studio_display_configure(DISPLAY_1, stm32h7_graphics_driver_setup_565rgb,
        LANGUAGE_CHINESE, DISPLAY_1_THEME_1, &root);
  • 由于上一步开启了扩展字符范围,这里要在gx_user.h文件中使能相应宏定义:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#define GX_EXTENDED_UNICODE_SUPPORT

20.4.2 第2步:设置汉字所在源文件编码格式为UTF-8

比如我们这里是将汉字显示放在MainTask.c文件,那么将此文件编码格式设置为UTF-8即可。简单点的办法,大家可以用记事本打开这个文件,然后设置为UTF-8并保存:

20.4.3 第3步:配置MDK,防止编码错误

MDK5 AC5编译UTF-8编码源文件容易出错,解决办法是在此位置添加--locale=english

MDK AC6无需设置。

20.4.4 第4步:设置GUIX资源文件到外部QSPI Flash。

下面将GUIX资源文件下载到QSPI Flash,需要大家先在这里添加QSPI Flash地址范围:

然后设置资源文件到外部QSPI Flash:鼠标右击文件guiapp_resources.c,选择Options。

20.5 GUIX窗口任意位置显示汉字

GUIX窗口任意位置汉字的实现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
VOID _cbWindow0(GX_WINDOW *widget)
{
    GX_RECTANGLE drawto;
    GX_CANVAS *mycanvas; 
    

    /* 默认的窗口绘制回调函数,即默认界面效果绘制 */
    gx_window_draw(widget);

    /* 定义一个矩形框,后续的2D绘制函数都是在这个矩形范围内绘制的 */
    gx_utility_rectangle_define(&drawto,
                                10, 
                                100,
                                400, 
                                265);
 
    /* 返回窗口对应的canvas画布 */
    gx_widget_canvas_get(widget, &mycanvas);
    
    /* 
      在指定的画布上启动绘图。此功能在内部被延迟绘图算法调用,GUIX在需要画布时自动执行更新。 
      但是允许应用程序绕过延期绘图算法并立即执行。
      首先调用gx_canvas_drawing_inititate在画布上绘画。
      然后调用所需的绘图函数,最后然后调用gx_canvas_drawing_complete即可。
    */
    gx_canvas_drawing_initiate(mycanvas, widget, &drawto);

    /* 设置笔刷画线的颜色值 */
    gx_context_raw_line_color_set(0xff000000);

    /* 设置笔刷填充的颜色值 */   
    gx_context_raw_fill_color_set(0xff00ff00);

    gx_context_font_set(GX_FONT_ID_NOTOSERIFSC);
    gx_canvas_text_draw(10, 130, "故人西辞黄鹤楼,烟花三月下扬州Ab", -1);
    gx_canvas_text_draw(10, 160, "孤帆远影碧空尽,唯见长江天际流Cd", -1);
   
    /* 用于强制立即绘制,注意,务必和gx_canvas_drawing_initiate成对调用 */
    gx_canvas_drawing_complete(mycanvas, GX_TRUE);
}
  • 字体的颜色是函数gx_context_raw_line_color_set设置的。
  • 字体设置通过函数gx_context_font_set实现,形参GX_FONT_ID_NOTOSERIFSC是在guiapp_resourecs.h定义。这个形参就是我们前面创建的全字库ID。
  • 文本的绘制通过函数gx_canvas_text_draw实现。

20.6 内部Flash和QSPI Flash程序调试下载配置(重要必看)

将下面两个地方配置后,就可以像使用内部Flash一样使用QSPI Flash进行调试了。并且这种方式可以方便的调试程序,内部Flash和外部Flash都做调试。

20.6.1 下载配置

注意这里一定要够大,否则会提示算法文件无法加载:

我们这里是将其加到DTCM中,即首地址为0x20000000,大家也可以存储到任意其它RAM地址,只要空间还够加载算法文件即可。推荐使用AXI SRAM(地址0x24000000),因为这块RAM空间足够大。

如果要下载程序到内部Flash和外部QSPI Flash里面,需要做如下配置,两个下载算法都要添加进来:

20.6.2 调试配置

注意这里一定要够大,否则会提示算法文件无法加载:

我们这里是将其加到DTCM中,即首地址为0x20000000,大家也可以存储到任意其它RAM地址,只要空间还够加载算法文件即可。

如果要做调试下载,需要做如下配置:

20.7 实验例程设计框架

本章例程的重点是GUIX的中文显示。

20.8 实验例程

(注,如果是电阻屏,需要做触摸校准,校准方法看本教程附件章节A)

配套例子:

本章节配套了如下两个例子供大家移植参考:

  • V7-2024_GUIX Chinese Font(QSPI Flash)

GUIX Studio生成的代码在硬件平台实际运行的工程,含有MDK AC5和AC6四个版本工程。

  • V7-2025_GUIX Studio Chinese Font(QSPI Flash)

GUIX Studio工程模板,设计界面后,生成的文件可直接添加到MDK,IAR和GCC软件平台使用。

实验目的:

  1. 本章主要学习GUIX的汉字显示(QSPI 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的界面设计如下:

串口打印任务执行情况:

IAR,MDK AC5和AC6工程可以串口打印任务执行情况:按开发板的按键K1可以打印,波特率 115200,数据位 8,奇偶校验位无,停止位 1:

20.9 总结

本章节主要为大家讲解了GUIX汉字显示的全字库方式,推荐大家熟练掌握本章节的函数用法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【STM32H7】第18章 ThreadX GUIX汉字显示(小字库)
GUIX Studio的设置方法与第11章一样,我们这里把控件的位置和大小做了调整,并为window窗口创建一个定时器。
Simon223
2021/01/06
7830
【STM32H7】第21章 ThreadX GUIX外置主题,字库和图库到外部SPI Flash
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第21章 ThreadX GUIX外置主题,字库和图库到外部S
Simon223
2021/01/26
8880
【STM32H7】第21章       ThreadX GUIX外置主题,字库和图库到外部SPI Flash
【STM32H7】第16章 ThreadX GUIX窗口局部刷新的实现
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第16章 ThreadX GUIX窗口局部刷新的实现 本章节为
Simon223
2021/01/06
5260
【STM32H7】第19章 ThreadX GUIX的OLED单色屏移植
注:我们这里以MDK AC5为例进行说明,其它的MDK AC6,Embedded Studio和IAR是一样的。
Simon223
2021/01/07
5150
【STM32F429】第12章 GUIX Studio生成代码移植到硬件平台
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第12章 GUIX Studio生成代码移植到硬件平台 本章节
Simon223
2020/12/29
7550
【STM32F429】第20章 ThreadX GUIX外置主题,字库和图库到外部SPI Flash
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第20章 ThreadX GUIX外置主题,字库和图库到外部S
Simon223
2021/01/26
7810
【STM32F429】第20章       ThreadX GUIX外置主题,字库和图库到外部SPI Flash
【STM32H7】第30章 ThreadX GUIX炫酷实用的时钟表盘设计,结合硬件RTC实时时钟
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第30章       ThreadX GUIX炫酷实用的时钟表盘设计,结合
Simon223
2022/05/10
3700
【STM32H7】第30章     ThreadX GUIX炫酷实用的时钟表盘设计,结合硬件RTC实时时钟
【STM32H7】第22章 ThreadX GUIX窗口图标滑动操作实现方法
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第22章 ThreadX GUIX窗口图标滑动操作实现方法 本
Simon223
2021/01/26
5760
【STM32H7】第22章       ThreadX GUIX窗口图标滑动操作实现方法
【STM32F429】第13章 ThreadX GUIX窗口任意位置绘制2D图形
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第13章 ThreadX GUIX窗口任意位置绘制2D图形 本
Simon223
2020/12/29
8700
【STM32H7】第28章 ThreadX GUIX滚轮控件实现参数调节
GUIX有三种滚轮控件,分别是Generic Scroll Wheel,Numeric Scroll Wheel和String Scroll Wheel。我们这里使用的是Numeric Scroll Wheel。
Simon223
2021/07/15
5250
【STM32H7教程】第82章 STM32H7的QSPI总线应用之QSPI Flash执行程序(BOOT+APP方式)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第82章 STM32H7的QSPI总线应用之QSPI Fl
Simon223
2020/11/24
1.6K0
【STM32H7教程】第82章       STM32H7的QSPI总线应用之QSPI Flash执行程序(BOOT+APP方式)
【STM32F429】第24章 ThreadX GUIX波形控件Line Chart
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第24章 ThreadX GUIX波形控件Line Chart
Simon223
2021/06/24
5170
【STM32F429】第7章 ThreadX GUIX移植到STM32F429(MDK AC5)
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第7章 ThreadX GUIX移植到STM32F429(MDK AC
Simon223
2020/12/01
1K0
【STM32F429】第7章   ThreadX GUIX移植到STM32F429(MDK AC5)
【STM32H7】第14章 GUIX Studio设计窗口切换
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第14章 GUIX Studio设计窗口切换 本章节为大家讲解
Simon223
2020/12/29
1K0
【STM32H7教程】第83章 STM32H7的内部Flash和QSPI Flash都运行程序的混合方式(强烈推荐)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第83章 STM32H7的内部Flash和QSPI Fla
Simon223
2020/11/24
1.6K0
【STM32H7教程】第83章       STM32H7的内部Flash和QSPI Flash都运行程序的混合方式(强烈推荐)
【STM32H7】第29章 ThreadX GUIX的摄像头OV7670动态图像显示
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第29章 ThreadX GUIX的摄像头OV7670动态图像
Simon223
2022/03/10
5610
【STM32H7】第29章       ThreadX GUIX的摄像头OV7670动态图像显示
【STM32H7】第25章 ThreadX GUIX复选框Checkbox回调事件处理
本章节为大家讲解GUIX复选框的使用。通过复选框的回调事件实现复选框选中和取消选择状态的功能处理。
Simon223
2021/04/19
1.9K0
【STM32H7】第25章       ThreadX GUIX复选框Checkbox回调事件处理
【第3版emWin教程】第30章 emWin6.x的SIF格式全字库生成和使用方法(Unicode编码,QSPI Flash方案)
教程不断更新中:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第30章 emWin6.x的SIF格式全字库生成和使用方法(
Simon223
2021/09/06
7510
【STM32F429】第25章 ThreadX GUIX数字小键盘的实现
最新教程下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=98429 第25章 ThreadX GUIX数字小键盘的实现 本章节为大
Simon223
2021/06/24
4990
【STM32H7教程】第86章 STM32H7的内部Flash和SPI Flash同时使用MDK一键下载
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第86章 STM32H7的内部Flash和SPI Flas
Simon223
2020/11/27
1.2K0
推荐阅读
【STM32H7】第18章 ThreadX GUIX汉字显示(小字库)
7830
【STM32H7】第21章 ThreadX GUIX外置主题,字库和图库到外部SPI Flash
8880
【STM32H7】第16章 ThreadX GUIX窗口局部刷新的实现
5260
【STM32H7】第19章 ThreadX GUIX的OLED单色屏移植
5150
【STM32F429】第12章 GUIX Studio生成代码移植到硬件平台
7550
【STM32F429】第20章 ThreadX GUIX外置主题,字库和图库到外部SPI Flash
7810
【STM32H7】第30章 ThreadX GUIX炫酷实用的时钟表盘设计,结合硬件RTC实时时钟
3700
【STM32H7】第22章 ThreadX GUIX窗口图标滑动操作实现方法
5760
【STM32F429】第13章 ThreadX GUIX窗口任意位置绘制2D图形
8700
【STM32H7】第28章 ThreadX GUIX滚轮控件实现参数调节
5250
【STM32H7教程】第82章 STM32H7的QSPI总线应用之QSPI Flash执行程序(BOOT+APP方式)
1.6K0
【STM32F429】第24章 ThreadX GUIX波形控件Line Chart
5170
【STM32F429】第7章 ThreadX GUIX移植到STM32F429(MDK AC5)
1K0
【STM32H7】第14章 GUIX Studio设计窗口切换
1K0
【STM32H7教程】第83章 STM32H7的内部Flash和QSPI Flash都运行程序的混合方式(强烈推荐)
1.6K0
【STM32H7】第29章 ThreadX GUIX的摄像头OV7670动态图像显示
5610
【STM32H7】第25章 ThreadX GUIX复选框Checkbox回调事件处理
1.9K0
【第3版emWin教程】第30章 emWin6.x的SIF格式全字库生成和使用方法(Unicode编码,QSPI Flash方案)
7510
【STM32F429】第25章 ThreadX GUIX数字小键盘的实现
4990
【STM32H7教程】第86章 STM32H7的内部Flash和SPI Flash同时使用MDK一键下载
1.2K0
相关推荐
【STM32H7】第18章 ThreadX GUIX汉字显示(小字库)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验