前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >开发者成长激励计划-开发笔记:最简步骤移植LVGL

开发者成长激励计划-开发笔记:最简步骤移植LVGL

原创
作者头像
flavorfan
发布2022-08-07 11:46:51
1.9K0
发布2022-08-07 11:46:51
举报
文章被收录于专栏:范传康的专栏

参数项目”自修伴侣“需要LCD上显示时钟,考虑移植LVGL。查了一些资料LVGL生态还是不错,不过其强大也就意味的移植,应用开发不会简单;此外lvgl快速发展,以为找到的各种教程版本差异导致你整合到一起不一定能工作。最简便的方法就是站在前人的肩膀上,把手上获得相同硬件平台的lvgl(好像是最近master分支)模块(文件)拷贝到自己的工程,再在工程上对应修改。因为绕开了移植操作,最是方便happy path。

也许有人会抬杠,那为什么不直接从那个lvgl的例程出发?因为lvgl只是显示,不是要是场景业务逻辑的核心,所以我的base 工程可以是基础前后台main循环,也可以是rtos的架构:这里把lvgl模块摘出来,做最小的修改再放到需要的地方,快速验证移植,作为一个方便的起点。

1. 文件复制、工程配置

base工程:

CH32V307VCT6_test,就是循环打印的的工程

lvgl工程:

01.lvgl_v8.2_for_ch32v_evb_TencentOS-tiny,移植lvgl某个新版本的工程

1) 文件复制

2)工程配置

这个版本的lvgl只要添加其父目录,内部自己处理相对路径。和以前版本不一样。

2. lvgl模块初始化及运行

1) lvglv相关初始化

lvgl也可以理解为os之上一个类os处理ui互动的框架,有自己的心跳,输入输出处理。初始化包括框架的初始化,以及依赖关联硬件驱动的初始化。

在合适的地方初始化,如果是裸工程的化main是个不错的地方,需要包含关联的头文件。

头文件
头文件
初始化以及setup
初始化以及setup

lv_tick_inc(1)的参数1,是因为1ms调用一次,用于给lvgl心跳;lv_timer_handler()是因为这个example是给timer类型的,task handler入口就是lv_timer_handler,用于响应外部对lvgl的输入。

2) lvgl 任务的example

这里example拷贝lvgl的代码,后面可以用gui-guider或者其他工具软件生成应用代码。

lvgl example task
lvgl example task

从代码上看,显示是一个基础lv_obj_t的对象,lv_exmpale_meter_xxx对它进行初始化,构建回调函数set_value以供外部输入控制。

运行情况及其他

运行情况
运行情况

其他

上述只是最简单的移植,lvgl还有很多课题:文件处理,输入输出,外部图片导入等等。如果移植到RTOS(比如TencentOS Tiny)有差异的就是心跳的实现,可能用一个tos的timer吧,或者空闲任务中计算tick差异?另外还有对于lvgl的外部输入,可以考虑用一个邮箱队列处理?

参考

1. TencentOS-tiny之移植LVGL v8.0.2 - 木子剑 - 博客园

2. AIoT應用創新大賽-基於TencentOS Tiny 的智能家居中控

3. 沁恒CH32V307应用方案分享之LVGL移植

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 文件复制、工程配置
    • 1) 文件复制
      • 2)工程配置
      • 2. lvgl模块初始化及运行
        • 1) lvglv相关初始化
          • 2) lvgl 任务的example
          • 运行情况及其他
          • 其他
          • 参考
          相关产品与服务
          TencentOS Server
          TencentOS Server 是腾讯云推出的 Linux 操作系统,它旨在为云上运行的应用程序提供稳定、安全和高性能的执行环境。它可以运行在腾讯云 CVM 全规格实例上,包括黑石物理服务器2.0。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档