首先下载EEZ Studio.
选择LVGL拖拽生成简单的界面。
构建后生成对应的 内容。
生成ui下的文件拷贝到LVGL编译环境。
写胶水代码:
#include "lvgl.h"
#include "ui/ui.h" // 引入 EEZ Studio 生成的总头文件
#include "ui/actions.h" // 引入 Action 声明
#include <stdio.h>
static lv_display_t* hal_init(void)
{
//lv_display_t* disp = NULL;
/* TODO: init display and indev */
// 1. 创建 SDL 窗口
// 参数:宽度, 高度
lv_display_t * disp = lv_sdl_window_create(800, 480);
// 2. 初始化 SDL 鼠标输入(模拟触摸屏)
lv_sdl_mouse_create();
// 3. (可选) 初始化 SDL 键盘
lv_sdl_keyboard_create();
return disp;
}
/**
* 2. 实现 Action (动作)
* EEZ Studio 在 actions.h 里只写了声明,你必须在这里写实现。
* 假设你在 Studio 里给按钮绑定了一个叫 "on_button_click" 的 Action
*/
void action_on_button_click(lv_event_t * e) {
lv_obj_t * target = lv_event_get_target(e);
printf("Action Triggered: 按钮被点击了!\n");
// 你可以在这里手动切换页面
// loadScreen(SCREEN_ID_PAGE2);
}
int main(int argc, char **argv) {
/* B. LVGL 核心初始化 */
lv_init();
lv_display_t* disp = hal_init();
if (disp == NULL) {
LV_LOG_ERROR("lv_demos initialization failure!");
return 1;
}
/* C. EEZ UI 初始化 */
// 这步会创建你在 Studio 里设计的第一个页面
ui_init();
printf("UI Initialized Sync...\n");
/* D. 主循环 */
while (1) {
// 1. 告知 LVGL 时间流逝(如果在嵌入式环境通常由中断处理,PC则手动模拟)
// lv_tick_inc(5);
// 2. LVGL 任务处理器(处理渲染、触摸点击)
lv_timer_handler();
// 3. EEZ 状态机刷新(处理动画、Flow逻辑、变量同步)
ui_tick();
}
return 0;
}
然后运行即可。、