前面的部分内容,不了解可以按顺序进行。

黄山派lvgl8学习笔记(1)画一个一个全白的背景-CSDN博客

黄山派lvgl8学习笔记(2)导入头文件和新建一个按钮控件-CSDN博客

黄山派lvgl8学习笔记(3)导入陀螺仪传感器数据-CSDN博客


前面我们大概了解了黄山派如何对一些板载硬件进行初始化,感谢@同学,好好学习 大佬的提醒,在lvgl学习中还有一些可视化开发工具,我们接下来将使用Gui Guider对黄山派进行开发。

一,Gui Guider下载与初识:

GUI Guider是恩智浦(NXP)推出的一款基于开源LVGL图形库的嵌入式人机交互(HMI)开发工具,支持拖拽式可视化设计,可快速开发高性能GUI界面

下载链接在此处【免费】GUI-Guiderlvglv1.91下载资源-CSDN下载

这边还需要注册一个账号进行登录才可以,我们登陆后打开界面如下图所示

点击创建新项目,如下图所示(如果界面是英文,先照着进去工程后,才可以修改成中文)

我们选择和黄山派同样的lvgl版本v8.3.10,点击下一步

直接点击下一步

这个空白界面大家可以自行去了解 (因为博主也不咋会),我们先下载一个demo进去 ,选择组件模板后,选择右边的MultiLanguage

这里我们按照下图进行填写,然后点击创建

进入后,如下图所示

Alt+q或者点击右上角进行仿真,选择C语言,这里要稍等一下

仿真完成后,我们右上角点击工程,然后选择工程目录打开

这里,我们就看到了这个仿真工程的全貌 

二,移植到黄山派上! 

在我们生成的仿真代码里,我们主要用到的是custom和generated两个文件夹

我们将他们复制到前面在黄山派中,生成的lv_user文件夹里,具体可以看黄山派lvgl8学习笔记(2)导入头文件和新建一个按钮控件-CSDN博客

粘贴后,lv_user文件夹如下图所示(忽略Kconfig文件,那个是我自己生成测试的)

 然后我们打开main函数,将下列头文件添加进去

#include "gui_guider.h"
#include "events_init.h"

lv_ui  guider_ui;                     

在main函数里,将my_demo_white注释掉,并替换成

    setup_ui(&guider_ui);           
    events_init(&guider_ui);       

    //my_demo_white();  将这个函数注释掉

这里放上整个main的代码

// this file is main.c

#include "rtthread.h"
#include "bf0_hal.h"
#include "drv_io.h"
#include "littlevgl2rtt.h"
#include "lv_ex_data.h"
#include "lv_demos.h"

#include "lv_user1.h"
#include "lv_sensor.h"

#include "gui_guider.h"
#include "events_init.h"

lv_ui  guider_ui;                     

int main(void)
{

    rt_err_t ret = RT_EOK;
    rt_uint32_t ms;

    /*rt_kprintf("Hello world!\n");

    board_io_init();

    struct rt_sensor_config cfg;
    sensors_init(&cfg);

    rt_device_t ltr303_dev, mmc56x3_dev, lsm6d_dev, lsm6d_gyro_dev, lsm6d_step_dev;
    open_and_config_devices(&ltr303_dev, &mmc56x3_dev, &lsm6d_dev, &lsm6d_gyro_dev, &lsm6d_step_dev);*/

    /* init littlevGL */
    ret = littlevgl2rtt_init("lcd");
    if (ret != RT_EOK)
    {
        return ret;
    }
    lv_ex_data_pool_init();
     
    //lv_demo_main();

    setup_ui(&guider_ui);           
    events_init(&guider_ui);       

    //my_demo_white();  将这个函数注释掉
    
    while (1)
    {
        ms = lv_task_handler();
        rt_thread_mdelay(ms);
    }
    return RT_EOK;
}

 然后进行编译

编译通过,然后下载进板子即可

 

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐