2、开发环境搭建:使用模拟器(PC模拟)快速上手、配置VS Code + SDL模拟器、编译第一个LVGL Demo
好,咱们正式开始动手了。
这一章,我带你把开发环境搭起来。说白了,就是让你能在自己的电脑上跑LVGL,看到图形界面动起来。不用买开发板,不用接屏幕,纯靠模拟器搞定。
我个人习惯用VS Code + SDL模拟器。为什么选这个组合?因为轻量、跨平台、调试方便。你想想看,写一行代码,按一下F5,界面就出来了,多爽。
2.1 为什么先用模拟器?
很多新手一上来就买开发板,结果卡在烧录、接线、驱动上,折腾半天连个点都点不亮。我刚开始学嵌入式GUI时也犯过这错。
模拟器的好处很明显:
- 零硬件成本——你手头这台电脑就够了
- 调试方便——打断点、看变量、改代码,秒级反馈
- 快速验证——UI布局对不对、动画流不流畅,一眼就能看出来
等你在模拟器上把逻辑调通了,再移植到真机上,基本就是改改驱动的事。
2.2 安装必备工具
我们需要三样东西:VS Code、CMake、以及一个支持SDL的编译器。
| 工具 | 用途 | 下载地址(建议) |
|---|---|---|
| VS Code | 代码编辑器 | code.visualstudio.com |
| CMake | 构建系统 | cmake.org/download |
| MinGW(Windows) | C编译器 | mingw-w64.org |
| SDL2 | 图形后端 | libsdl.org/download-2.0 |
2.3 配置VS Code + SDL模拟器
嗯,这里步骤稍微多一点,但别怕。我一步步带你走。
2.3.1 克隆LVGL模拟器项目
LVGL官方提供了一个PC模拟器项目,叫lv_port_pc_eclipse。虽然名字带Eclipse,但用VS Code完全没问题。
git clone https://github.com/lvgl/lv_port_pc_eclipse.git
cd lv_port_pc_eclipse
2.3.2 安装VS Code插件
打开VS Code,装这几个插件:
- C/C++(微软官方)
- CMake Tools
- Code Runner(可选,方便快速跑)
2.3.3 配置CMake
在项目根目录下,创建一个build文件夹:
mkdir build
cd build
cmake .. -G "MinGW Makefiles"
如果你用的是Linux或macOS,把MinGW Makefiles换成Unix Makefiles。
include_directories("C:/SDL2/include")link_directories("C:/SDL2/lib")
2.3.4 编译并运行
在VS Code里按Ctrl+Shift+P,输入CMake: Build,等编译完成。然后按F5运行。
如果一切顺利,你会看到一个灰色的窗口,中间有个LVGL的logo在旋转。恭喜,你的第一个LVGL Demo跑起来了!
2.4 第一个Demo代码解析
咱们看看模拟器里默认的main.c,其实核心代码就这几行:
#include "lvgl.h"
#include "lv_drivers/display/monitor.h"
#include "lv_drivers/indev/mouse.h"
int main(void)
{
lv_init();
monitor_init();
mouse_init();
lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
disp_drv.flush_cb = monitor_flush;
lv_disp_drv_register(&disp_drv);
lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv);
indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read_cb = mouse_read;
lv_indev_drv_register(&indev_drv);
// 创建一个简单的标签
lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "Hello LVGL!");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
while(1) {
lv_task_handler();
SDL_Delay(5);
}
return 0;
}
你看,流程其实很清晰:初始化LVGL → 注册显示驱动 → 注册输入驱动 → 创建UI控件 → 进入事件循环。
2.5 验证你的环境
跑起来之后,你可以试着改改代码。比如把"Hello LVGL!"改成你自己的名字,或者换个颜色。
我建议你做个简单测试:
- 改标签文字——确认代码修改生效
- 改窗口大小——在monitor_init()里调分辨率
- 加个按钮——试试lv_btn_create()
这些改动都能立刻看到效果。嗯,这就是模拟器最大的价值——即时反馈。
2.6 常见问题与避坑
- 编译报错找不到lvgl.h——检查CMakeLists.txt里的LVGL路径是否正确。我习惯用git submodule来管理LVGL源码。
- 窗口黑屏——多半是SDL2初始化失败。试试在main开头加个SDL_Init(SDL_INIT_VIDEO)。
- 鼠标点击没反应——检查mouse_init()是否调用了,以及indev_drv.read_cb是否赋值正确。
好了,环境搭好了,Demo也跑起来了。下一章咱们开始真正写自定义控件。你想想看,从零到一看到自己的代码变成图形界面,是不是挺有成就感的?