文档首页> LiteOS> 功能组件> GUI> 开发指导
更新时间:2021-07-08 GMT+08:00
分享

开发指导

移植LittlevGL

如果需要在STM32xxx之外的其他运行Huawei LiteOS的嵌入式设备上移植LittlevGL,请在开发应用程序之前,根据设备提供的不同能力适配底层驱动(类似的工作我们已经在STM32F769IDISCOVERY上实现)。主要需要适配的内容有:显示驱动适配、输入驱动适配、tick适配、任务适配,适配的方法可以参考官方文档LittlevGL移植官方文档

初始化LittlevGL并添加任务

适配好驱动之后,在开发应用程序之前,还需要在Huawei LiteOS上将LittlevGL初始化,并创建LittlevGL的任务,可以参考Huawei LiteOS在STM32F769IDISCOVERY上的实现:Huawei LiteOS预留给用户使用的任务处理函数app_init()中,添加LittlevGL任务。当前Huawei LiteOSapp_init()中调用了DemoEntry()函数,该函数又调用了LvglDemo()。LvglDemo()函数创建了LittlevGL任务,其任务处理函数为LvglTaskEntry()。LvglTaskEntry()函数中,初始化LittlevGL,并循环调用LittlevGL的任务处理函数lv_task_handle()r,代码示例如下:

STATIC VOID LvglTaskEntry(VOID)
{
    /* Enable the CPU Cache */
    EnableCache();

    lv_init();

    tft_init();
    touchpad_init();

#ifdef LV_USE_DEMO_WIDGETS
    lv_demo_widgets();
#endif

    while (1) {
        lv_task_handler();
        LOS_Msleep(LVGL_TASK_POLL_PERIOD);
    }
}

UINT32 LvglDemo(VOID)
{
    UINT32 ret;
    UINT32 taskId;
    TSK_INIT_PARAM_S lvglTask;

    (VOID)memset_s(&lvglTask, sizeof(TSK_INIT_PARAM_S), 0, sizeof(TSK_INIT_PARAM_S));
    lvglTask.pfnTaskEntry = (TSK_ENTRY_FUNC)LvglTaskEntry;
    lvglTask.uwStackSize = LVGL_TASK_STACK_SIZE;
    lvglTask.pcName = "Lvgl_Task";
    lvglTask.usTaskPrio = LOSCFG_BASE_CORE_TSK_DEFAULT_PRIO;
    lvglTask.uwResved = LOS_TASK_STATUS_DETACHED;

    ret = LOS_TaskCreate(&taskId, &lvglTask);
    if (ret != LOS_OK) {
        return ret;
    }
    return ret;
}

功能特性

后续Huawei LiteOS将陆续提供更多GUI的优化和增强功能。

分享:

    相关文档

    相关产品