STM32-emWin
丝芬周
2026年02月26日 21:08
收录于文集
共12篇

emWin的制作公司和STM32有合作,所以有大量的直接适配STM32+LCD的软件。

Codeblocks, GUIBuilder, BmpCvtST, ...,大量软件可以帮助我们快速生成对应的图形界面。

下面只记录一些关键的操作,如果后续感觉需要补上,那么后面再补吧。

GUIBuliders可以直观的图形化设计界面,Codeblocks可以模拟界面操作。

当需要加入图片时,我们可以用BmpCvtST将图片转为位图格式;需要用中文字符时,使用FontCvtST;

GUIBuilders:

首先放入window,作为一切对象放置的基础。然后我们可以放入其他组件,比如按钮和文本(右键可以分别设置一些属性)

左上角File-Save可以保存当前的设计文件。这里需要注意,这个保存的文件一般位于GUIBuilder所在的文件夹中(严格来讲,是和GUIBuilder.ini文件同一个文件夹中)

然后用Codeblocks打开。点击1框编译,2框运行程序,

运行程序后弹出该界面

这样我们可以设计好程序逻辑,下面是一些其他软件的使用:

有些地方我们需要放图片进去,那么这里就需要使用BmpCvtST

载入图片,发现图片格式是ARGB,我们需要转为我们需要的RGB:Image - Convert to - 16 bit Color 565(我选择这个,看自己需要哪个),然后就可以File - Save as。

部分内容还需要用到中文字库,我们可以用FontCvtST。

首先我们先创建一个txt,输入我们用到的所有文字,然后另存为,把编码方式改为Unicode (没有的话选择UTF-16 BE),这一步必须有!打开FontCvtST,

Edit - Disable all characters,再点击Edit - Read pattern file,选择上面另存为的txt文件,此时就把txt中有的汉字都使能了,再File - Save,生成.c文件,打开后就可以看到生成的文字代码。

下面我们加入到工程中。

在代码中使能UTF-8编码方案,然后将字库添加到工程中(设置.c源文件位UTF-8编码),程序中引用字库,text小工具选择字库,然后就可以打印字符内容了。

1.使能UTF-8编码方案

代码块
C
自动换行
复制代码
GUI_UC_SetEncodeUTF8();
复制成功

2.将字库添加到工程中

  1. .c源文件用UTF-8编码

在.c工程文件中extern一下,加入UTF-8编码

4.改字体的编码方式

5.然后修改.c的编码方式。经过测试,只有改为UTF-8 BOM才可以正常工作。

改完后打开codeblocks,发现需要reload一下,正常加载,然后重新打一下字,就可以正常显示汉字了。

下面是这些.c工程文件移植到STM32的内容

1.把Codeblocks对应Application文件夹整个复制到STM32的三方库中

2.打开Keil 5,打开工程文件

调整编码方法,改为Encode in UTF-8...(如图)

3.把工程文件添加到Keil中

.c源工程代码、位图、字体全部添加进去。

编译!然后!发现有一堆的Warnings

这是因为之前我们用电脑编译,但这里是用STM32编译,直接从Codeblocks移植过来是行不通的。

既然是函数未声明,那么我们就可以简单的写一个.h文件,把这些函数包含进去

然后在各个.c文件中 #include "include_dlg.h",这样就可以工作了...吗?

编译!发现一堆错误。

这些error的问题本质是编码过程出现错误,所以我们需要重新另存为各个工程文件(依旧是改为UTF-8 BOM)

再编译!

芜湖!我们成功把所有报错都解决了。

下面我们要考虑MainTask()要放在哪里了。好吧,就是放在freeRTOS任务里。

同时改一下Touch_Task()内容

然后编译、烧录,就可以在LCD上显示啦。