RT-Thread qemu LVGL9.5 LV_LOG_USER 输出打印适配

说明

  • RT-Thread : 5.2.0

  • LVGL 9.5

  • BSP : qemu-vexpress-a9

默认 LVGL LV_LOG_USER 没有输出,想对接到 RT-Thread 的控制台输出 rt_kprinf

LVGL 的 LOG开启

  • LVGL 的 lv_conf.h 中,配置设置如下,如果没有就添加
c 复制代码
#define LV_USE_LOG                  1
#define LV_LOG_LEVEL                LV_LOG_LEVEL_USER
  • 等级 LV_LOG_LEVEL_USER 说明 LV_LOG_USER 可以输出

注册 LVGL log 输出的 callback

  • lv_log_register_print_cb 可以设置 LVGL 的打印回调函数,回调函数中,采用 rt_kprintf 输出即可
c 复制代码
void rtt_log_cb(lv_log_level_t level, const char * buf)
{
    rt_kprintf(buf);
}

void lv_user_gui_init(void)
{
    lv_log_register_print_cb(rtt_log_cb);
    lv_example_button_1();
}

测试示例

c 复制代码
#include <stdint.h>
#include <stdio.h>
#include <rtthread.h>
#include <lvgl.h>

void rtt_log_cb(lv_log_level_t level, const char * buf)
{
    rt_kprintf(buf);
}

static void event_handler(lv_event_t * e)
{
    lv_event_code_t code = lv_event_get_code(e);

    if(code == LV_EVENT_CLICKED) {
        LV_LOG_USER("Clicked");
    }
    else if(code == LV_EVENT_VALUE_CHANGED) {
        LV_LOG_USER("Toggled");
    }
}

void lv_example_button_1(void)
{
    lv_obj_t * label;

    lv_obj_t * btn1 = lv_button_create(lv_screen_active());
    lv_obj_add_event_cb(btn1, event_handler, LV_EVENT_ALL, NULL);
    lv_obj_align(btn1, LV_ALIGN_CENTER, 0, -40);
    lv_obj_remove_flag(btn1, LV_OBJ_FLAG_PRESS_LOCK);

    label = lv_label_create(btn1);
    lv_label_set_text(label, "Button");
    lv_obj_center(label);

    lv_obj_t * btn2 = lv_button_create(lv_screen_active());
    lv_obj_add_event_cb(btn2, event_handler, LV_EVENT_ALL, NULL);
    lv_obj_align(btn2, LV_ALIGN_CENTER, 0, 40);
    lv_obj_add_flag(btn2, LV_OBJ_FLAG_CHECKABLE);
    lv_obj_set_height(btn2, LV_SIZE_CONTENT);

    label = lv_label_create(btn2);
    lv_label_set_text(label, "Toggle");
    lv_obj_center(label);
}

void lv_user_gui_init(void)
{
    lv_log_register_print_cb(rtt_log_cb);
    lv_example_button_1();
}

int main(void)
{
    rt_kprintf("Hello RT-Thread!\n");

    return 0;
}

输出效果

  • LVGL 的 LOG 通过 RT-Thread 默认的 rt_kprintf 打印
相关推荐
xzl041 天前
LVGL 启动流程全解析:RT-Thread 下的界面渲染链路
rt-thread·lvgl
xzl041 天前
LVGL Coffee UI 接入实战:问题解决全记录
ui·rt-thread·lvgl
亚林瓜子7 天前
AWS Glue PySpark中日志设置
python·spark·日志·aws·pyspark·log·glue
神一样的老师7 天前
【兆易创新GD32VW553开发板试用】 BSP 从 GitHub 下载与编译指南
单片机·github·rt-thread
xzl047 天前
【Menuconfig】RT-Thread配置菜单第一级
rt-thread
xzl048 天前
瑞萨 FSP 和 STM32 HAL 库的启动流程核心差异
stm32·单片机·嵌入式硬件·rt-thread
xzl048 天前
RT-Thread 5.2.2内核模块
开发语言·rt-thread
Shining05969 天前
QEMU 编译开发环境搭建
人工智能·语言模型·自然语言处理·云原生·qemu·vllm·华为昇腾
高铭杰12 天前
Postgresql热迁移pgbench持续读写零中断
postgresql·qemu·neon