LiteOS
LiteOS
本文导读
链接复制成功!
开发指导
移植LittlevGL
如果需要在STM32xxx之外的其他运行Huawei LiteOS的嵌入式设备上移植LittlevGL,请在开发应用程序之前,根据设备提供的不同能力适配底层驱动(类似的工作我们已经在STM32F769IDISCOVERY上实现)。主要需要适配的内容有:显示驱动适配、输入驱动适配、tick适配、任务适配,适配的方法可以参考官方文档LittlevGL移植官方文档。
初始化LittlevGL并添加任务
适配好驱动之后,在开发应用程序之前,还需要在Huawei LiteOS上将LittlevGL初始化,并创建LittlevGL的任务,可以参考Huawei LiteOS在STM32F769IDISCOVERY上的实现:Huawei LiteOS预留给用户使用的任务处理函数app_init()中,添加LittlevGL任务。当前Huawei LiteOS在app_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的优化和增强功能。
父主题: GUI