当前位置:网站首页>开发者成长激励计划-开发笔记:最简步骤移植LVGL
开发者成长激励计划-开发笔记:最简步骤移植LVGL
2022-08-07 13:03:00 【flavorfan】
参数项目”自修伴侣“需要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是个不错的地方,需要包含关联的头文件。
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或者其他工具软件生成应用代码。
从代码上看,显示是一个基础lv_obj_t的对象,lv_exmpale_meter_xxx对它进行初始化,构建回调函数set_value以供外部输入控制。
运行情况及其他
其他
上述只是最简单的移植,lvgl还有很多课题:文件处理,输入输出,外部图片导入等等。如果移植到RTOS(比如TencentOS Tiny)有差异的就是心跳的实现,可能用一个tos的timer吧,或者空闲任务中计算tick差异?另外还有对于lvgl的外部输入,可以考虑用一个邮箱队列处理?
参考
1. TencentOS-tiny之移植LVGL v8.0.2 - 木子剑 - 博客园
边栏推荐
- 代码随想录笔记_动态规划_518零钱兑换II
- vscode create shortcut key template
- 让天下没有难学的js之this到底是什么,怎么用,这里可能给你答案
- China University of Petroleum (Beijing) - "Drilling Fluid Technology Principle" Phase II Online Operation
- vmware入门之运行RHEL虚拟机
- ie浏览器的部分兼容性问题
- 校园篮球网页作业成品 运动系列NBA篮球主题 学校篮球网页制作模板 学生简单体育运动网站设计成品
- odoo社区版审批流
- 中国石油大学(北京)-《钻井液工艺原理》第二阶段在线作业
- yolo v5 口罩监测
猜你喜欢

中国石油大学(北京)-《 渗流力学》第三阶段在线作业

vscode创建快捷键模板

Altium Designer 19.1.18 - Create a copper sheet with the same shape as the Keep-Out Layer

使用vxe-table行合并后所合并到的行后面会多出一列空白出来,

我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知

Meta提出OmniMAE:用统一架构预训练视频和文本

odoo社区版审批流

2022年危险化学品生产单位安全生产管理人员考试题模拟考试题库及答案

周末复盘,高手不卖产品只讲故事!

China University of Petroleum (Beijing) - Online work of the third stage of "Percolation Mechanics"
随机推荐
MySQL ERROR: ERROR 1292 (22007) : Incorrect date value: '1988' for column 'birthday' at row 1
ESP8266-Arduino编程实例-MMA8451加速度计驱动
odoo community edition approval flow
vmware入门之运行RHEL虚拟机
Error: required args <xml=string> at error (index.esm.js?93ce:68:1) at Parser.parse (index.e
【学习】代码里引入的包都是啥东西
DiskGenius安装教程
实现Sprite的Circle Fill效果及打了图集出现的问题
FairMOT Online Tracking Framework and Code Learning Records
OneNote 教程,如何在 OneNote 中使用绘图和批注?
Installation of Anaconda
2022年危险化学品生产单位安全生产管理人员考试题模拟考试题库及答案
Leetcode LCP 40. 心算挑战(可以,已解决)
Character (string) and memory manipulation library functions
PDF转换工具安装教程
代码随想录笔记_动态规划_518零钱兑换II
Meta提出OmniMAE:用统一架构预训练视频和文本
postgresql逻辑备份工具pg_dump和pg_resotre学习
网上办理国信证券券开户安不安全?
4. 插件开发原理