<strong><font color="#4e5e9e">1、引言</font> </strong>
自从 2013 年第一款侧重于 GUI 应用的 STM32F429x【内嵌 Chrom-ART 图形加速和 LTDC 控制器】开始,ST 就为大 家提供了 STM32MCU + X-Cube-TouchGFX 一站式 GUI 开发平台。越来越多的客户使用 STM32 + TouchGFX 开发智能手表/智能家居控制面板等嵌入式设备。
在嵌入式GUI开发的应用中,设备厂家希望自己的设备支持用户根据自己喜好来定义所选用的字体类型。从技术上讲,可以将字体和应用程序分离开,这样可以在嵌入式设备有限的存储空间上根据需要更新和升级字体的类型。
<strong><font color="#4e5e9e">2、TouchGFX Binary font 介绍</font> </strong>
TouchGFX为客户提供了二进制字体(Binary Font)的方法,这些字体没有链接到应用程序中,而是作为文件与应用程序分开存储,这些文件在运行时由应用程序加载并提供给TouchGFX。
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264661-1.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
当应用程序加载了二进制字体后,可以在TouchGFX字体系统中安装二进制字体。这里内置的 Font2 被应用程序加载的Binaryfont 替换。此后,TouchGFX 不再使用链接的Font2,使用自定义的Binary font进行显示。
下面例程展示了如何使用BinaryFont进行字体动态更新。
<strong><font color="#4e5e9e">3、演示例程实现过程</font> </strong>
<strong>3.1.打开 TouchGFX Designer 4.18.0</strong>
- TouchGFX4.18.0 (本文使用 4.18.0 举例,其他版本操作过程相同)
▪ 环境安装请参考网址: https://support.touchgfx.com/docs/introduction/installation
- VSCode
<strong>3.2.打开 TouchGFX Designer 4.18.0</strong>
选择 STM32F746DK 探索板,生成工程 :
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264662-2.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264663-3.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.3 选择 “文本配置”,选择 “二进制字体文件”</strong>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264664-4.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.4 设计 Screen1 (添加 Images/TextArea/Buttons)</strong>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264665-5.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.5 设置 Typographies :</strong>
- Typographies 设置 :
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264665-5.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
- Single Use 设置:
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264667-7.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.6 TouchGFX Designer 生成项目</strong>
可以在以下目录下找到verdana和verdana italic的二进制字体文件 :
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264668-8.png&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.7 在代码中安装二进制字体</strong>
在 TouchGFX 使用文本前,二进制字体必须从文件或其他存储中复制到可直接寻址的存储空间。当应用程序将二进制字体加载到内存时,它可以在 TouchGFX 中安装字体,之后 TouchGFX 将使用该字体而不是编译后的字体。
- 在FrontApplication.cpp安装默认的二进制字体:
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264669-9.jpg&…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264670-10.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.7 添加 Button 交互,用于选择使用不同的二进制字体</strong>
- 添加交互,当按键按下,切换成相应的二进制字体 :
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264671-11.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
- 添加代码 Screen1View.hpp
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264672-12.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264673-13.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
- 添加代码 Screen1View.cpp
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264674-14.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264675-15.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong>3.8 编译运行结果如下 :</strong>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264676-16.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<center><img src="http://mcu.eetrend.com/files/2022-08/wen_zhang_/100562775-264677-17.png…; alt=“STM32GUI_使用 TouchGFX 二进制字体(Binary Font)功能实现字体动态更新" /></center>
<strong><font color="#4e5e9e">验证</font> </strong>
从以上的演示可以看到,通过TouchGFX Designer的简单配置和调用其提供的API,就可以轻松实现字体的动态更新。
厂家和用户可以根据场景需求灵活使用本功能。比如 ,厂家可以通过针对的不同用户群体来提供OTA服务,让用户动态更新自己的字体类型。这样由于各二进制字体可以占用同一块内存区域,厂家的硬件成本也会得到降低。
具体示例实现过程,请参考示例代码 : 《hello-tgfx4180-binary-font-v1.0-202112.7z》
来源:<a href="https://mp.weixin.qq.com/s/qqmlFnw425QzHSwRpggm2Q">STM32单片机</a>
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。