STMCU小助手
发布时间:2022-8-3 20:00
|
1、引言 自从 2013 年第一款侧重于 GUI 应用的 STM32F429x【内嵌 Chrom-ART 图形加速和 LTDC 控制器】开始,ST 就为大 家提供了 STM32MCU + X-Cube-TouchGFX 一站式 GUI 开发平台。越来越多的客户使用 STM32 + TouchGFX 开发智能手表/智能家居控制面板等嵌入式设备。) k2 @" }' a1 p# | 3 R9 Y8 {! X2 l/ p. u$ n r 在嵌入式GUI开发的应用中,设备厂家希望自己的设备支持用户根据自己喜好来定义所选用的字体类型。从技术上讲,可以将字体和应用程序分离开,这样可以在嵌入式设备有限的存储空间上根据需要更新和升级字体的类型。 2、TouchGFX Binary font 介绍 TouchGFX为客户提供了二进制字体(Binary Font)的方法,这些字体没有链接到应用程序中,而是作为文件与应用程序分开存储,这些文件在运行时由应用程序加载并提供给TouchGFX。8 }9 n; b3 O; A3 _ u4 m# p / O/ L+ g8 f' b6 y0 a; s6 y$ ?5 M2 q
1 [: o, S, l# w' W0 Y , ]* |+ \ x5 o9 b4 ` 当应用程序加载了二进制字体后,可以在TouchGFX字体系统中安装二进制字体。这里内置的 Font2 被应用程序加载的Binaryfont 替换。此后,TouchGFX 不再使用链接的Font2,使用自定义的Binary font进行显示。9 E: Y, {" |% u8 H/ r+ L: I + ~9 }; j$ \# ~6 P5 t4 P; j 下面例程展示了如何使用BinaryFont进行字体动态更新。5 @5 H$ J4 a4 Q, e" J1 \ g$ _# k/ s. C; o, J( G 3、演示例程实现过程 0 g0 i" m$ W" H; t6 V& o# u 3.1.打开 TouchGFX Designer 4.18.0 - TouchGFX4.18.0 (本文使用 4.18.0 举例,其他版本操作过程相同)2 }/ y6 p4 l4 c$ V1 }# \, Z - VSCode" R b1 E* k% ?: R$ d$ a7 W4 t 0 R1 Y/ B0 H! ~# G. i. b 3.2.打开 TouchGFX Designer 4.18.0 选择 STM32F746DK 探索板,生成工程 :* J8 @( S3 `3 n& M
# y; \5 Y" o x; B 3.3 选择 “文本配置”,选择 “二进制字体文件”
3.4 设计 Screen1 (添加 Images/TextArea/Buttons)! l( ]8 H8 ~: e* I' d% d, n
3.5 设置 Typographies : - Typographies 设置 :" @" y, O4 ?3 v6 c# Y _) {- I6 o
) C# _6 S7 s0 s/ H- F - Single Use 设置:
$ \% ^$ W+ J! ?4 H7 e8 O 2 e7 m" {% w. S; ` 3.6 TouchGFX Designer 生成项目 K0 h+ Y8 x: X' L: r7 p( _ 可以在以下目录下找到verdana和verdana italic的二进制字体文件 :) a U/ Z1 M L7 r
9 B8 Q- F6 r- h$ ~: u* U' Z : b* s" v- E. u 3.7 在代码中安装二进制字体 6 k: L# @$ x8 U R 在 TouchGFX 使用文本前,二进制字体必须从文件或其他存储中复制到可直接寻址的存储空间。当应用程序将二进制字体加载到内存时,它可以在 TouchGFX 中安装字体,之后 TouchGFX 将使用该字体而不是编译后的字体。2 A& j/ V S! G: g1 _3 b5 [ _- ]& c * j: i9 d+ l8 A, @! c7 S - 在FrontApplication.cpp安装默认的二进制字体:
- g/ h6 S4 a$ v2 \ $ P) f- l2 [/ N6 S" x3 X; I 3.7 添加 Button 交互,用于选择使用不同的二进制字体3 r3 B! D4 f' q B1 x - 添加交互,当按键按下,切换成相应的二进制字体 :# r+ ^) Q) G9 Y% d# V N+ x7 F + r4 g; u2 Q4 i* D
* B7 D/ N/ A# _1 `8 e$ C: ?% } - 添加代码 Screen1View.hpp
- 添加代码 Screen1View.cpp ) z( F9 F) _5 _' k2 j% W( q$ ~
! Q6 I1 i" a9 \3 {, `6 U. t& n
. s; P- S0 z5 I9 Z! r * h Y2 d* s# I2 ^: ^ 3.8 编译运行结果如下 :9 C* ^: I1 k3 u) [7 Q
$ {" J5 s6 h3 ^7 W7 c% s 验证( |8 ]! \3 U2 ^ ; c2 |- Q" [8 R( B8 l$ Q( S 从以上的演示可以看到,通过TouchGFX Designer的简单配置和调用其提供的API,就可以轻松实现字体的动态更新。 厂家和用户可以根据场景需求灵活使用本功能。比如 ,厂家可以通过针对的不同用户群体来提供OTA服务,让用户动态更新自己的字体类型。这样由于各二进制字体可以占用同一块内存区域,厂家的硬件成本也会得到降低。 1 Z) D' F& M g; v |
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
Keil-MDK 在线调试设置断点的高级用法
请教下STM32N6570 怎么把分辨率改成320x240并可以全屏显示
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
基于stm32平台上的IC-MU磁绝对值编码器SPI通讯和码盘数据处理
使用STM32 MCU和MPU连接PDM数字麦克风
分享STM32资料-采用 STM32U031R8 MCU 的 STM32 Nucleo-64 开发板,官方资料,数据手册等资料
HRTIM 指南
使用 STM32 的 DWT 单元监控内存
DAC,COMP,HRTIM Fault 功能的使用
微信公众号
手机版