【前言】
GUI Guider2.0.0版本可以直接导出zephyr工程,这就给GUI设计提供了极大的方便。这一篇我将分享如何使用GUI Guider2.0.0设计STM32H747I-disco的界面,快速实现LVGL的界面设计。
【GUI界面设计】
1、使用GUIGuider2.0.0生成自定义的界面工程:

屏我们适应800*480的长宽。
2、设计基础界面如下:

3、在button添加自定义事件,代码如下:

【工程导出】
在GUIGuider2.0.0的文件夹中,拷贝generated、coustom文件到src目录下面。

【代码修改】
1、将generated与coustom添加到CMakeLists.txt中
用 FILE(GLOB_RECURSE) 把 src/generated/** 和 src/custom/** 全部加入编译,并添加 include 路径 src/generated、src/generated/events、src/custom(生成代码里存在 events/gg_event.h、custom.h 这类交叉引用)。用 GLOB 是为了以后从 GUI Guider 重新生成代码拷进来时不用改 CMake(重新构建时记得带 -p always 刷新文件列表)。
# SPDX-License-Identifier: Apache-2.0
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
project(stm32h747_lvgl)
# GUI Guider 2.0.0 generated code (regenerated files are picked up on rebuild)
FILE(GLOB_RECURSE gui_guider_sources
src/generated/*.c
src/custom/*.c
)
target_include_directories(app PRIVATE
src/generated
src/generated/events
src/custom
)
target_sources(app PRIVATE src/main.c ${gui_guider_sources})2、修改main.c如下:
/*
* STM32H747I-DISCO + B-LCD40-DSI1 (MB1166-A09) GUI Guider demo
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/display.h>
#include <zephyr/logging/log.h>
#include <lvgl.h>
#include "gui_guider.h"
#include "gg_utils.h"
#include "custom.h"
LOG_MODULE_REGISTER(app, LOG_LEVEL_INF);
gg_ui_t guider_ui;
int main(void)
{
const struct device *display_dev =
DEVICE_DT_GET(DT_CHOSEN(zephyr_display));
if (!device_is_ready(display_dev)) {
LOG_ERR("Display device not ready");
return 0;
}
setup_ui(&guider_ui);
custom_init(&guider_ui);
display_blanking_off(display_dev);
LOG_INF("GUI Guider UI started");
while (1) {
lv_timer_handler();
k_sleep(K_MSEC(10));
}
return 0;
}3、prj.conf不需要修改。
【编译与下载】
执行如下编译命令:
west build -b stm32h747i_disco/stm32h747xx/m7 -p always --shield st_b_lcd40_dsi1_mb1166_a09
执行west flash就可以直接将固件下载到开发板中。
【工程效果】

点击button可以实现计数据的累加。
【总结】
结合zephyr与guiguider2.0.0的设计工具,可以高效快捷的实现GUI的设计。相比stm32 touchgfx,更新快捷高效!
我要赚赏金
