这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » STM32F407之GuiGuider界面移植

共6条 1/1 1 跳转至

STM32F407之GuiGuider界面移植

助工
2024-08-27 08:30:17   被打赏 50 分(兑奖)     打赏

【前言】

星火一号,提供了RTT的LVGL的移植例程,在他的基础之上使用LVGL进行图形界面的开发,可以缩短开发时间,但是如果想实现图形界面开发还需要一个良好的lvgl图形化的开发工具,这里我选择Gui_Guider这一个免费的开发工具。

【开发前的工程分析】

工程模版我使用了星火一号的RTT的lvgl模版工程。

image.png_

先择好模块工程之后,下载到开发板,是可以正常运行的。在使用这工程,得先分析一下他的工程结构。模块工程他运行的是LVGL的demo工程。他的工程结构在mdk中是有一个lvgl-demo的。

在它的lvgl-port分组中有一个lv_thread_prot.c中创建了一个lvgl_thread_init的任务创建,并使用INIT_ENV_EXPORT在初始化。其代码如下:

static void lvgl_thread_entry(void *parameter)
{
#if LV_USE_LOG
    lv_log_register_print_cb(lv_rt_log);
#endif /* LV_USE_LOG */
    lv_init();
    lv_port_disp_init();
    lv_port_indev_init();
    //lv_user_gui_init();
		lv_ui  guider_ui;                     // 声明 界面对象
		setup_ui(&guider_ui);           // 初始化 UI
		events_init(&guider_ui);       // 初始化 事件
    /* handle the tasks of LVGL */
    while(1)
    {
        lv_task_handler();
        rt_thread_mdelay(LV_DISP_DEF_REFR_PERIOD);
    }
}

static int lvgl_thread_init(void)
{
    rt_err_t err;

    err = rt_thread_init(&lvgl_thread, "LVGL", lvgl_thread_entry, RT_NULL,
           &lvgl_thread_stack[0], sizeof(lvgl_thread_stack), PKG_LVGL_THREAD_PRIO, 0);
    if(err != RT_EOK)
    {
        LOG_E("Failed to create LVGL thread");
        return -1;
    }
    rt_thread_startup(&lvgl_thread);

    return 0;
}
INIT_ENV_EXPORT(lvgl_thread_init);

那么如果我们需要使用自己的图形界面,那么就需要在这个任务中启用自己的GUI图形界面的初始化代码。

【GUI图形化测试】

打开Gui_Guider,创建一个简单的图形界面

1、新建工程,基于v8来创建

image.png

2、选择自定义模版:

image.png

3、选择空白模版:

image.png

4、填写工程名字、工程路径、色彩深度选择16bit、自定义宽高为240*240,然后点击创建,生成工程。

image.png

5、在屏幕上简单添加两个标签:

image.png

6、在工具栏上点击生成C代码。

image.png

6、查看工程文件夹,生成了代码如下图所示,我们需要用到的文件为custom、generated两个文件夹内的东西。

image.png

【代码移植】

1、打开工程模版,将上述的两个文件夹拷贝到\projects\06_demo_lvgl\applications\lvgl\gui文件夹下:

image.png

2、打开工程后,向工程分组中添加LVGL-gui分组,并把custom、generated两个文件下面的以及子目录下面的全部.c文件添加进工程:

image.png

3、添加工程头文件到工程中.\applications\lvgl\gui\custom、.\applications\lvgl\gui\generated、

.\applications\lvgl\gui\generated\guider_customer_fonts。当然如果有图片资源还需要对应添加文件目录。

image.png

4、在lv_rt_thread_port.c中添加头文件的引用:

#include "gui_guider.h"
#include "events_init.h"          // Gui Guider 生成的初始化事件、回调函数

在lvgl_thead_entry中添加lv_gui的对象声明,以及初始化UI,初始化事件的代码:

		lv_ui  guider_ui;                     // 声明 界面对象
		setup_ui(&guider_ui);           // 初始化 UI
		events_init(&guider_ui);       // 初始化 事件

到此整个工程就移植完毕。

【移植效果】

下载到开发板后,效果如下图所示:

image.png

以后如果工程修改了,只需要复制这两个文件夹到项目,再重新编译就行了。

【总结】

Gui_Guider提供了免费的Lvgl界面设计工程,是一款非常好的工具。同时移植也非常简单。

【感谢】

在这篇文章中我学习了如下帖子,感谢他的教程:【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程_gui guider stm32-CSDN博客

https://blog.csdn.net/qq_49053936/article/details/137834282





关键词: STM32F407     GuiGuider     界面移植    

菜鸟
2024-08-27 10:49:00     打赏
2楼

牛啊,有这么方便的设计工具,开发速度也加快了不少


院士
2024-08-27 12:04:42     打赏
3楼

谢谢分享,这样就方便了。


专家
2024-08-27 19:42:09     打赏
4楼

谢谢分享


高工
2024-08-27 19:43:32     打赏
5楼

感谢分享


专家
2024-08-27 19:44:36     打赏
6楼

感谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]