美文网首页STM32TouchGFX
TouchGFX基础:再谈中文显示

TouchGFX基础:再谈中文显示

作者: 海东青电子 | 来源:发表于2019-07-26 00:59 被阅读0次

    有关在touchgfx中显示中文的基本介绍,请见之前的文章:TouchGFX基础:显示中文

    本文将介绍如何加入用户自己的字体,比如下面这个效果:

    图一 图二

    这是 STM32F746G-DISCO 开发板的效果。之前的文章都是基于 F769I-DISCO 板子的,本文章开始,将在 STM32F746G-DISCO 板子上实验,主要原因是746板子的显示部分只用到LTDC接口,相比769板子的DSI+LTDC接口要简单的多,便于后续对touchgfx代码实现的分析。

    好,下面来看看如何在板子上实现启功先生的“启体”。首先要获得字体文件,就是称为TrueType的字体文件,后缀名为.ttf。网上有ttf字体下载地址,比如《字体下载 - 中文字体下载 - 启功字体简体下载》,从下载的包里解压出ttf文件:FZQiTi-S14S.TTF,好神秘的名字,估计是“方正启体”的意思。为了使用这个新字体,有两种方法,一种是把字体文件加入到windows 10系统中,即copy ttf文件到 C:\Windows\Fonts 目录下,相当于为系统安装了新字体;还有一种方法是,新字体只提供给touchgfx使用。我们使用第二种方法。

    使用 Touchgfx Designer 新建一个针对 STM32F746G-DISCO 板子的应用,选择 STM32F746G Discovery Kit :

    图三

    这里有个小问题,关于746板子的配置模板有1.0和2.0两个版本,系统默认显示的是1.0版本的,它们的区别是2.0版本能自动生成STM32CUBE的配置文件、方便后续使用CUBE来对MUC进行配置,所以我们要选择2.0的模板来使用。点击上图中的 i 符号:

    图四

    点击下拉框,选择v2.0.0:

    图五

    保持默认的空白画布(Blank UI):

    图六

    添加一个 Box 控件、修改成纯蓝的背景色:

    图七

    添加一行纯白色的文字:

    图八

    看过之前关于字体配置文章的读者知道,上面的中文是否能正确显示、按什么字体显示,是取决于默认的名为 Large 的”字体类“中选择了什么样的字体(Font):

    图九

    当前选择的字体是Verdana,这是个西文字体,不支持中文的。我们需要把”启体“字体文件装载到当前工程中。先Ctrl+S、保存当前工程,然后将之前下载好的字体文件 FZQiTi-S14S.TTF copy到当前工程的 fonts 目录下:

    图十

    然后,点击 Large 条目的 Font 下拉框,查找  FZQiTi-S14S 字体名称,但是F开头的字体名称中没有我们新加入的字体:

    图十一

    可以这样理解,Touchgfx Designer 貌似不能动态感知到我们已经为工程添加了一个新字体文件。关闭Touchgfx Designer、重新启动,再来检查字体:

    图十二

    新字体ok了!回到主界面,测试用的那一行中文也变成新的字体了:

    图十三

    生成代码,运行模拟器:

    图十四

    运行结果正确!回到设计界面,修改成2行文字:

    图十五

    再次生成代码、运行模拟器,得到正确结果(截图略)。进入IAR,编译、可以正确生成hex目标文件:

    图十六

    烧写,出错了:

    图十七 图十八

    提示信息说的是,片外flash(起始地址为0x9000 0000)无法烧写。这是因为IAR中默认的烧写配置文件不对(整个IAR工程是Touchgfx Designer 自动生成的,不知道为什么有这个问题),问题容易解决,IAR里安装的烧写文件是直接支持 STM32F746G-DISCO 板子的(769I板子就没这么幸运了!)。在IAR工程选项窗口中,更换烧写配置文件:

    图十九

    点击 ”...“ 按钮,在弹出窗口中选择 FlashSTM32F7xx_STM32F746G-DISCO.board :

    图二十

    再次烧写,成功:

    图二十一

    板子运行情况:

    图二十二

    小结:

    1、为了正确显示中文,需要装载对应的字体 .ttf 文件,copy到工程对应的fonts目录下。

    2、重启动Designer、使新字体生效。

    3、IAR烧写hex文件时,需要正确配置烧写文件。

    下一篇文章将介绍如何通过freeRTOS任务传递消息实现MCU控制功能,敬请期待!

    相关文章

      网友评论

        本文标题:TouchGFX基础:再谈中文显示

        本文链接:https://www.haomeiwen.com/subject/dhhlrctx.html