| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32 LVGL移植 -> 正文阅读 |
|
[嵌入式]STM32 LVGL移植 |
参考链接:10分钟教你在MDK中部署LVGL 获取LVGL cmsis-pack链接:https://github.com/lvgl/lvgl/tree/master/env_support/cmsis-pack 下载好之后直接单击安装或者手动选择打开方式(Pack Unzip) MDK中加入LVGL
修改源码显示部分移植显示部分在参考链接中已经描述了一部分,直接贴出原文的一些修改操作。 lv_port_disp_init函数选择模式 这一部分注释掉我们不需要的模式,然后定义一些没有的参数,比如我使用的是模式2,就这样操作 注释掉其他的模式 在头文件或者源文件中定义没有的参数 继续修改下面的参数 disp_init()?函数在这里面初始化lcd屏 disp_flush函数这个函数应该就是lvgl刷新屏幕显示的函数。 形参area中包含了一个矩形框的左上角坐标(area->x1,area->y1)和右下角坐标(area->x2,area->Y2) 形参color_p是一个颜色指针,位数看你定义的颜色深度,该指针指向矩形区域第一个像素点的颜色数据,通过++color_p可以得到矩形区域从左到右从上到下所有像素点的颜色数据。 综上,我们可以使用屏幕打点的方式来实现这个函数,但是这样会造成屏幕刷新很慢。另一种方式就是填充的方法(前提是在显示屏的驱动中有一个开矩形框然后使用颜色指针来填充颜色的函数)
使用打点函数实现的一般不会出什么问题,但是使用填充的方式实现的就可能造成显示的偏移,就是屏幕的显示每一行都朝着左或者右偏移,这时候就是你填充函数的问题了,在同一行多写了一个颜色数据或者少写了一个颜色数据,不断的往下就会造成偏移。 !!!PS:如果在移植的时候,自己使用的函数形参类型与lvgl的lv_color_t 不匹配的话,可以直接将该形参类型改为你需要的类型,也就是颜色深度的位数,但前提是lvgl的颜色深度得定义好。比如我使用的是16位颜色深度就直接将lv_color_t改成uint_16t,当然函数声明里面记得更改。 心跳时钟
测试?上面的函数修改完成之后,就可以直接可以进行测试了
烧录完成之后你会在屏幕上看到一个按钮,如果按钮没有长得奇奇怪怪的话,那么显示的移植就成功了。此时这个按钮是没办法点击的,即使我们给它加入了点击事件,接下来就是触摸的移植。 触摸移植和上面的操作类似,先将lv_port_indev_template.c文件的全局开关打开 if 1,修改头文件包含路径
还有lv_port_indev_template.h文件的全局开关打开,并修改头文件包含路径 ?接下来就是函数的实现 lv_port_indev_init函数在这个函数定义了多种触摸或者说输入设备的初始化,我们选择我们需要的触摸设备就好,其他全部注释 就是保留下面的部分,其他全部注释? touchpad_init函数你的触摸屏硬件初始化 touchpad_read函数这个函数会被隔一段时间调用,然后检测是否触摸屏被按下,如果被按下就读取相应的坐标值。原函数长这样 我们可以直接在这里面实现触摸按下检测和坐标读取,也可以单独去实现touchpad_is_pressed函数(检测触摸是否按下)touchpad_get_xy函数(获取当前点击的坐标值),最终达到实现该函数的目的。下面的原子的实现方式,直接在touchpad_read函数中去实现了。 tp_dev.sta是一个按下标志位,需要在while循环中不断去扫描触摸屏是否被按下了。还有一种方式就是使用外部中断的方式,触摸屏的按下/抬起引脚设置为双边沿触发外部中断引脚,然后在中断函数中去设置该标志位,这样可以使得cpu利用率更高一点。 还有就是抬起和按下一定要有标志位,也就是一定要让lvgl知道你什么时候按下,什么时候抬起的,这样才能实现一些滑动窗口的拖动。 换句话说就是标志位不能只是在按下的时候设置,应该在抬起的时候同样也要设置(复位标志) 测试上面的输入设备修改好之后,同样使用原来的测试代码,这次就可以点击按钮了,按钮上的标签字符串也会随着点击而发生改变,同时可以看到按钮是有明显的按下抬起显示的。 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/29 7:49:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |