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 打印
相关推荐
牛奶咖啡1314 天前
KVM虚拟化与企业应用实践——给远端主机创建虚拟机
云原生·qemu·kvm·给远端主机创建虚拟机·创建uefi模式的虚拟机·安装openeulersp2·vnc与虚拟机环境搭建
牛奶咖啡1315 天前
KVM虚拟化与企业应用实践——通过网络介质配合ks自动应答文件实现自动安装KVM虚拟机
云原生·qemu·kvm·系统网络引导与ks自动应答环境·远程资源+ks文件安装虚拟机·通过网络介质引导自动安装虚拟机·qemu的总线类型详解
冰山一脚201316 天前
kvm驱动学习笔记
qemu
IOT那些事儿16 天前
RT-Thread STM32F407自制BSP编译
bsp·rt-thread·hal·stm32f407zet6
ggaofeng19 天前
如何通过uboot加载硬盘
linux·qemu·uboot
ScilogyHunter19 天前
QEMU完全指南
linux·qemu
冰山一脚20131 个月前
qemu的cpu加速器分析笔记
qemu
jieyucx1 个月前
Go 语言零基础入门:标准库 log 包完全教程
golang·日志·log
时光飞逝的日子1 个月前
嵌入式智能体开发指南:基于鸿蒙 ArkUI 与 RT-Thread 的设备自主决策系统实现
rt-thread·鸿蒙系统·自主决策·嵌入式智能体·设备协同·嵌入式 aiot
小灰灰搞电子1 个月前
rt-thread RTC设备使用详解
rt-thread·rtc