先介绍一下本人情况普本的软件工程专业,一战考研失利,去大厂干测试感觉枯燥且转正无望,于是打算学习嵌入式软件开发,非佬纯属分享学习心得,如有不妥,请尽管批评,感谢大家的意见。
现在进入的是嵌入式的lvgl篇章,可以把它理解为界面的展示,类似于纯软的前端。
一:环境搭建
二:小项目以及各组件介绍
一:环境搭建
具体可以分为x86和arm版本,因为我们实训中主要用的是开发板6818,所以需要用到交叉编译工具arm-linux-gcc,否则如果将生成的文件拷贝到开发板中,用命令file 文件(你的生成文件名字)查看架构,如果不是arm版本的话就跑不了。总结:所需的工具有虚拟机,vscode,cmake,sdl库等等
现在我就来介绍一下两个环境的配置过程。
1.1:x86环境的配置
第一步,需要下载安装包lvgl的版本和对应的驱动,这里我用的是lvgl-8.3.11的版本,链接我放到下面,有需要的小伙伴可以自行下载
lvgl版本:https://github.com/lvgl/lvgl/tree/release/v8.3
lvgl驱动:https://github.com/lvgl/lv_drivers/tree/release/v8.3
第二步:解析,并正确形成lv_conf.h和lv_drv_conf.h文件,具体步骤如下
1.把Ivgl目录下的lv conf template.h拷贝一份为lv_conf.h,用大白话讲就是复制下面的lv_conf_template然后粘贴,然后重命名名字为lv_conf.h就ok
2.把Iv drivers目录下的lv drv conf template.h拷贝一份为lv drv conf.h,用大白话讲就是复制粘贴再重命名,这里可以参照上面的步骤
第三步:配置相关驱动设置,将所需要的功能设置为1
第四步:在文件生成main.c文件和CMakeLists.txt文件,新建文件,改名为这两个就好咯,所以文件最后包括的内容如下所示。
1。2:arm版本的操作
首先得知道为什么要移植到arm版本?因为我们的开发板只能支持arm架构,所以如果架构不对的话,就会显示失败。具体步骤如下
也没得如下了,其实就是和上面的步骤一样 照着做,只是相关的配置驱动设置不同而已,这里我会分细节去讲解。
二:小项目以及各组件介绍
项目要求:建立一个可以跳转的新旧窗口
思路1:先封装一个窗口函数,新建窗口,窗口里面有一个按钮,按钮里面有标签显示,最后给按钮添加事件。
思路2:再封装一个新窗口函数,跟上面一样的步骤。
用大白话介绍所用到的各组件和样式设计
1.封装窗口函数设计
//创建窗口
lv_obj_t *窗口函数名 =lv_obj_create(父类);
窗口函数名自己取,父类即在上面界面下创建窗口,一般是屏幕。
//设置窗口大小
lv_obj_set_size(窗口名,宽度,高度);
//设置窗口位置,让它居中
lv_obj_center(窗口名);
//设置背景颜色
lv_obj_set_style_bg_color(窗口名,颜色参数,0);
//在窗口设计按钮和标签
lv_obj_t *按钮名=lv_btn_create(窗口名);//这里是btn创建
//设置标签
lv_obj_t *标签名l=lv_label_create(按钮名);//这里是label创建
//在标签添加文本,便于观看
lv_label_set_text(标签名, "文本");
//最后给按钮设置事件
lv_obj_add_event_cb(按钮函数名, 回调函数, 事件类型, NULL);
//回调函数的设计
// 登录界面按钮回调
static void login_btn_event_cb(lv_event_t *e)
{
if (lv_event_get_code(e) == LV_EVENT_CLICKED) {
// 不删除屏幕,而是删除登录窗口
lv_obj_t *button = lv_event_get_target(e);
lv_obj_t *mainproject = lv_obj_get_parent(button);
lv_obj_del(mainproject);
new_show();
}
}
以下是参考代码
新窗口的函数设计大家可以根据上面的实例代码模仿操作。
这个是运行效果图,点击login按钮和back按钮,可以实现两个窗口的切换
最后附上lvgl 8.3.11版本的手册以及源码,方便大家了解与批评。
源码链接:https://download.csdn.net/download/weixin_69436998/90983371