创建一个简单的按钮并响应点击事件#include "lvgl/lvgl.h"
#include "stm32f4xx_hal.h"
// 模拟硬件的初始化(实际中会根据硬件进行初始化)
void HardwareInit(void)
{
HAL_Init();
// 初始化显示屏和触摸屏等硬件
// (此处仅为伪代码)
// Init_Display();
// Init_Touchscreen();
}
// 初始化LVGL库
void LVGL_Init(void)
{
lv_init();
// 配置LVGL驱动与硬件接口(如显示、触摸屏等)
// lv_disp_drv_t disp_drv;
// lv_indev_drv_t indev_drv;
// 初始化显示设备
// lv_disp_drv_init(&disp_drv);
// lv_indev_drv_init(&indev_drv);
// lv_disp_drv_register(&disp_drv);
// lv_indev_drv_register(&indev_drv);
}
void lv_task_handler(void)
{
lv_task_handler(); // 处理LVGL的任务
HAL_Delay(5); // 延时
}
// 按钮点击事件处理函数
static void btn_event_handler(lv_obj_t *btn, lv_event_t event)
{
if(event == LV_EVENT_CLICKED) {
lv_label_set_text(lv_obj_get_child(btn, NULL), "Clicked!"); // 修改按钮上的文字
}
}
int main(void)
{
HardwareInit(); // 初始化硬件
LVGL_Init(); // 初始化LVGL
// 创建一个按钮
lv_obj_t *btn = lv_btn_create(lv_scr_act(), NULL); // 在当前屏幕创建按钮
lv_obj_set_pos(btn, 50, 50); // 设置按钮的位置
lv_obj_set_size(btn, 120, 50); // 设置按钮的大小
// 创建一个按钮上的标签
lv_obj_t *label = lv_label_create(btn, NULL);
lv_label_set_text(label, "Click me!"); // 设置按钮文本
// 为按钮添加事件处理函数
lv_obj_set_event_cb(btn, btn_event_handler);
// 进入主循环
while (1) {
lv_task_handler(); // 处理LVGL任务(刷新界面、事件处理等)
HAL_Delay(5); // 必须有一定的延时,通常是操作系统调度周期
}
}
|