代码改变世界

GD32入门到实战45--LVGL研发(Code::Blocks)之创建控件

2025-09-16 13:31  tlnshuju  阅读(6)  评论(0)    收藏  举报

打开

可以设置屏幕分辨率

lv_conf.h设置要和keil设置的一样

设置好后可以点击这个红色按键(编译+仿真)

这时会弹出窗口

创建控件

我们在文件夹创建hmi_demo文件夹

我们在软件新建空白文件

命名放在hmi_demo文件夹

点击ok

新建头文件

我们在Sources的lvgl文件夹添加刚才创建的.c文件

在Headers的lvgl文件夹添加刚才创建的.h文件

编写hmi_demo.c

#include "lvgl.h"
void HmiDemo(void)
{
lv_obj_t *btn1 = lv_btn_create(lv_scr_act());//父对象为屏幕左上角原点
lv_obj_set_size(btn1, 100, 100);//设置btn大小
lv_obj_set_pos(btn1,120,40);    //设置btn位置(基于父对象)
//   lv_obj_t *btn2 = lv_btn_create(btn1);//父对象为btn1
}

.h

#ifndef _HMI_DEMO_H
#define _HMI_DEMO_H
void HmiDemo(void);
#endif // HMI_DEMO_H

main.c

/**
* @file main
*
*/
/*********************
*      INCLUDES
*********************/
#include
#include
#include "lvgl/lvgl.h"
#include "lvgl/demos/widgets/lv_demo_widgets.h"
#include "lv_drivers/win32drv/win32drv.h"
#include
#include "hmi_demo/hmi_demo.h"//调用我们自己写的库
/*********************
*      DEFINES
*********************/
/**********************
*      TYPEDEFS
**********************/
/**********************
*  STATIC PROTOTYPES
**********************/
static void hal_init(void);
static int tick_thread(void *data);
/**********************
*  STATIC VARIABLES
**********************/
/**********************
*      MACROS
**********************/
/**********************
*   GLOBAL FUNCTIONS
**********************/
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
{
/*Initialize LittlevGL*/
lv_init();
/*Initialize the HAL for LittlevGL*/
lv_win32_init(hInstance, SW_SHOWNORMAL, 320, 480, NULL);
/*Output prompt information to the console, you can also use printf() to print directly*/
LV_LOG_USER("LVGL initialization completed!");
/*Run the demo*/
//lv_demo_widgets();
HmiDemo();//人机交互界面
while(!lv_win32_quit_signal) {
/* Periodically call the lv_task handler.
* It could be done in a timer interrupt or an OS task too.*/
lv_task_handler();
usleep(10000);       /*Just to let the system breath*/
}
return 0;
}

运行可以看见: