<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
简介
图形用户界面 (GUI) 越来越受欢迎,其图形也比以前更加丰富,但如果没有帮助,创建这些显示可能会非常耗时。由于上市时间是产品开发中如此重要的因素,因此拥有一种工具来加快产品 GUI 的开发非常重要。SEGGER 的 AppWizard 是一个 GUI 开发工具,它可以帮助您创建可运行的 GUI 应用程序(当然建立在 SEGGER 的 emWin 图形库之上)。
本文档将向您展示如何创建一个新的 AppWizard 项目并添加背景图像以帮助您开始 GUI 项目。我们将使用 i.MX RT1050,但这些说明应适用于 MCUXpresso SDK 中 emWin 支持的任何设备。
环境
- SEGGER AppWizard v1.0 或更高版本
- NXP MCUXpresso IDE v11.0.1 或更高版本
- MIMXRT1050-EVKB
- 适用于 MIMXRT1050-EVKB 的 MCUXpresso SDK(包括 emWin)
下载并安装 MCUXpresso SDK
第一步是下载并安装您正在使用的设备 MCUXpresso SDK。确保 emWin 作为可选软件组件包含在内。如果您需要有关如何执行此操作的说明,请参阅视频“emWin 和 MCUXpresso 入门” 。
下载并安装 AppWizard
可以从NXP emWin Libraries Download 选项卡下载 AppWizard。导航至www.nxp.com/emwin-graphics-libraries ,单击下载选项卡,然后单击 AppWizard 应用程序开发工具旁边的下载。
单击此链接将会下载安装程序到您的电脑。只需运行安装程序并按照提示将 AppWizard 安装到您的电脑。请记住,NXP 建议为任何现有的安装选项选择默认值。
导入 SDK 示例
在创建新的 AppWizard 项目之前,需要一个空间来保存和导出生成的文件。NXP 建议导入最简单的示例作为模板:emwin_serial_terminal 演示。要导入此示例,请按照以下说明操作。
- 打开 MCUXpresso IDE 并选择所需的任何工作区。
- 在快速启动面板中,选择导入 SDK 示例。

- 选择您的主板或设备。确保您的主板或设备受 SDK 中的 emWin 支持。对于此示例,我们将选择 evkbmimxrt1050。

- 在下一个对话框中,找到“示例”类别中的 emwin_examples 组并展开它。选择 emwin_serial_terminal 示例。请注意,您还可以在此处为您的项目添加描述性的前缀或后缀。

创建新的 AppWizard 项目
创建示例项目后,现在可以创建 AppWizard 项目,因为有一个位置可以保存项目并保留生成的文件。按照以下说明创建一个新的 AppWizard 项目。
- 首先打开AppWizard。如果这是您第一次打开 AppWizard,它将提示您创建一个新项目、打开一个项目或取消(这将直接关闭应用程序)。如果是,请选择“创建新项目”。如果没有,您可以选择文件->新建项目。

- 将会弹出一个带有额外选项的对话框。

- 选择“浏览”以选择 AppWizard 生成的文件的目标文件夹。建议选择刚刚导入的项目本地的位置。这将位于您启动 MCUXpresso 时选择的工作区位置。

- 下一步是给你的 AppWizard 项目命名。建议选择与 MCUXpresso 项目相同的名称,并在名称后附加“_AppWizard”,如下所示。

- 现在,您可以选择一个 BSP
- 如果您选择 BSP,请确保选择适合您的主板的 BSP。

- 或者,如果您使用的设备和显示器在预定的 BSP 中不可用,则手动选择显示尺寸和颜色格式。(注意:如果您不选择 BSP,则需要手动创建 Target/GUI_Lib 文件夹才能使本教程正常工作。)有关此内容的说明将在本文档后面介绍。)
最后三个复选框是可选的,用于启用 SD 卡支持、双向文本支持和泰语支持。 - 最后,单击“确定”即可创建新项目。

在新创建的AppWizard项目中,将显示一个空白画布。
在项目文件夹中,会新建一个文件夹,以创建项目时建立的项目名称命名。

在此文件夹中,将有您创建的 AppWizard 项目、一个 Simulation 文件夹(用于保存模拟文件)、一个 Source 文件夹(用于保存 AppWizard 将创建的源文件)和一个 Target 文件夹(用于保存 BSP 文件和库文件)。(注意:如果您没有选择 BSP,则目标文件夹将不存在。)

如果您没有选择 BSP,请在 evkbimxrt1050_emwin_serial_terminal_AppWizard 文件夹中手动创建一个 Target 文件夹。在目标文件夹中,创建一个 GUI_Lib 文件夹。然后将头文件从 /ProgramData/Segger/AppWizard_/Lib/Include 复制到刚刚创建的 Target/GUI_Lib 文件夹中。

然后将库从/ProgramData/Segger/AppWizard_/Lib/GCCM4 复制到您刚刚创建的 Target/GUI_Lib 文件夹。(注意:如果需要,您可以在 GCCM7FP 中使用该库,但您需要将其重命名为 libGUI.a 并启用浮点支持。)

向 AppWizard 项目添加背景图像
接下来,您需要向项目添加背景图像并生成用于 MCUXpresso 项目的文件。按照这些说明将背景图像添加到您的项目。
- 单击左侧面板上的“图像”以调出“图像资源”对话框。

- 在图像资源对话框中,选择添加。

- 这将允许您从 PC 上的任何位置选择图像。您选择的文件将自动复制并放置在 /Resource/Image 中。添加图像后,需要将它们添加到画布上。能够将任何对象(包括图像)添加到空白画布的第一步是向画布添加一个屏幕。将屏幕图标拖放到画布上即可添加屏幕。添加并选择屏幕后,您应该会看到屏幕的属性,并且可以根据需要编辑属性。

- 现在,通过单击并将图像图标拖到刚刚添加的屏幕上,将图像对象添加到屏幕上。

- 选择图像后,您可以从屏幕右侧的窗格更改图像的大小、位置和名称。更改高度和宽度以匹配屏幕尺寸,并更改为 0, 0。

- 使用此控制面板,单击位图左侧的箭头,然后单击位图下方的方块以设置用于此图像对象的位图图像。

- 单击方块将弹出“选择图像”对话框。滚动找到要使用的图像,选择它,然后单击“选择”将其用作图像。

- 图像现在应该出现在项目中,就像它出现在您的屏幕上一样。

- 最后,单击文件->导出并保存。这将生成编程开发板所需的 AppWizard 文件。

修改 MCUXpresso 项目设置
一旦生成 AppWizard 项目文件,就需要修改 MCUXpresso 项目以使用 AppWizard 文件。根据本文档中的先前说明,MCUXpresso 项目仍应保持打开状态。如果没有,请返回并执行它们以确保项目已打开。
以下说明详细说明如何配置 MCUXpresso 项目以使用 AppWizard 文件。
- 在 MCUXpresso 项目中,首先在 MCUXpresso 项目资源管理器中找到 AppWizard 项目文件夹。右键单击该文件夹并选择属性,如图所示。

- 在 C/C++ 构建类别中选择设置。确保未选中“从构建中排除资源”,然后单击“应用并关闭”。

- 接下来,展开 AppWizard 项目文件夹,然后展开 Target 文件夹。右键单击配置文件夹并打开属性对话框。

- 在 C/C++ Build -> Settings 中,一定要选中“ Exclude resource from build ”。然后单击“应用并关闭”。

- 对 BSP、FS_Lib、OS_Lib、SEGGER、Shared 和 Simulation 文件夹重复步骤 3 和 4。

- 右键单击项目并选择属性,打开项目属性对话框。

- 在 C/C++ Build -> Settings 类别中,选择 MCU C Compiler -> Architecture。如下所示,将浮点数更改为无。

- 在 MCU 汇编器 -> 架构和标题中,将浮点更改为无,如图所示。

- 在 MCU Linker-> Architecture 中,将 Floating point 更改为 None,如图所示。

- 接下来,在MCU Linker -> Libraries中,将库改为“GUI”,并将搜索路径改为库所在的位置。(请注意,在您的 PC 上的文件系统中,该库实际上将被命名为“libGUI.a”。MCUXpresso 仍应设置为查找 GUI。MCUXpresso 将查找以“lib”开头的文件,并在将此库传递给链接器时删除此前缀。)

- 修改项目设置的最后一步是添加包含搜索路径。在 MCU C 编译器下,选择“包含”,并确保包含以下路径
- “${workspace_loc:/ ${ProjName} /evkbimxrt1050_emwin_serial_terminal_AppWizard/Target/GUI_Lib”
- “${workspace_loc:/ ${ProjName} /evkbimxrt1050_emwin_serial_terminal_AppWizard/Source/Generated”
- “${workspace_loc:/ ${ProjName} /evkbimxrt1050_emwin_serial_terminal_AppWizard/Source/CustomCode”
- “${workspace_loc:/ ${ProjName} /evkbimxrt1050_emwin_serial_terminal_AppWizard/Target/BSP/iMXRT1052_MIMXRT1050_EVK/Setup”
- “${workspace_loc:/ ${ProjName} /evkbimxrt1050_emwin_serial_terminal_AppWizard/Target/Inc”

- 还请确保删除以下路径:
- "${workspace_loc:/${ProjName}/emwin/emWin_Config
- "${workspace_loc:/${ProjName}/emwin/emWin_header
修改项目源
修改项目属性后,需要进行源文件更改,因为原始源不打算与 AppWizard 一起使用。以下是您开始操作时需要进行的源更改。
- 只需将 APPW_X_NoFS.c 文件复制到 PC 文件系统的 Source 文件夹中,即可将其添加到项目中。(请注意,APPW_X_NoFS.c文件可以从NXP emWin 库下载选项卡下载。)

- 在主源文件 emwin_serial_terminal.c 中,注释掉或删除 BOARD_InitLcd() 下面的所有内容,如下所示。

- 在 BOARD_InitLcd() 下方,插入对 MainTask() 的调用,如图所示。

- 最后,打开emwin_support.h(在板文件夹中找到),将 LCD_BITS_PER_PIXEL 更改为 32。如果您将默认值保留为 8,则背景图像将根据 LCD_X_DisplayDriver 的写入方式加载到帧缓冲区中。

结束语
这就是如何在 AppWizard 中创建新项目以及如何添加背景图像。此时,您应该能够编译并将项目下载到目标板。您应该知道如何导入一个简单的 SDK 示例作为模板,创建一个新的 AppWizard 项目,向该项目添加屏幕和图像,修改模板项目以使用 AppWizard 项目源文件和库,以及如何修改源以使用新的 AppWizard 项目。
你好@chris_brown ,
客户按照“创建新的 AppWizard 项目”部分中的第 6 步操作。但她的所有屏幕都重叠,并且闪烁了几次才切换到下一个屏幕。附件是视频。
造成这种行为的可能原因是什么?感谢您的建议。
此致,
奥黛丽
Hi @EngHuiPeng ,
如果 RT1064 设备不在 v1.2 的选择列表中,那么他们可能还没有在 AppWizard 中支持该设备。您需要按照我概述的“创建新的 AppWizard 项目”部分中的步骤 6 进行操作。其中包含了包含该库的步骤。
顺祝商祺!
克里斯
克里斯,
我尝试使用 v1.2,但看不到 RT1064 的 BSP 选择。如何进行库替换。
谢谢。
此致,
奥黛丽
Hi @EngHuiPeng ,
我相信这是可能的。我还没有尝试过,但我看不出它有任何不起作用的理由。我认为您只需要按照我在没有 BSP 的情况下工作时所展示的方式替换库文件。
顺祝商祺!
克里斯
客户希望将 EmWin AppWizard 用于 RT1064。他们向我们确认是否可以使用最新版本的 Segger Appwizard v1.20(可在 Segger 网站上下载)来代替 nxp.com 上的 EmWin Appwizard v1.08。是否有任何 SDK 支持最新版 Appwizard。
谢谢。
此致,
奥黛丽