STM32F103 hal库 移植 freeRTos+LVGL

先配置freeRTOS

配置时钟   选用外部晶振

这里选用其他定时器,至于为什么我也不是很懂,好像说是跟稳定

 

 

 

配置FREERTOS

其他配置看着办

移植LVGL

先去gitee下载源码

        选择一个版本

开始移植


1、添加lvgl源码到工程文件中
把lvgl-8.0.2\src文件夹直接复制到新建的GUI文件夹里,这个src里面就是源码

把lvgl-8.0.2\examples\porting文件夹复制到新建的GUI文件夹里,这是移植用的接口

把lvgl-8.0.2目录下的lvgl.h、lv_conf_template.h、LICENCE.txt、README.md一共4个文件复制到新建的GUI文件夹里,后面两个可以不用,不影响移植。

搬运好了代码,我们得给文件改个名字,不然文件内部包含的头文件名字不一致把touch\lvgl目录下的lv_conf_template.h文件名字改成lv_conf.h

porting目录下所有文件名字的**_template**删了,改完之后的样子

2、在keil中添加.c文件和包含文件目录。
把GUI\src路径下的所有.c文件都添加到GUISRC分组,你没有听错,是所有.c文件,包括所有子目录,可以结合Ctrl+A快捷键全选之后再点击添加,提高效率。(这里添加的时候很容易出错,一定要细心)
把GUI\porting路径下的所有.c文件都添加到GUIPORTING分组
包含文件目录,这里补充一下前面添加定时器时忘记包含文件目录了,这里补上。

然后给lvgl心跳,这里要用到FREERTOS的钩子函数

用FREERTOS的configUSE_TICK_HOOK 给lvgl一个心跳,告诉lvgl过了一毫秒

void vApplicationTickHook(void)
{lv_tick_inc(1);
}

lv_port_disp.c、lv_port_disp.h、lv_port_indev.c、lv_port_indev.h四个文件的#if 0 都改成#if 1 ,这四个文件包含的头文件名字还需修改,具体看下图。这四个文件中的两个.h文件中,路径为#include "lvgl/lvgl.h"改成#include “lvgl.h”。

随带在lv_port_disp.h文件下添加初始化函数:void lv_port_disp_init(void);

随带在lv_port_indev.h文件下添加初始化函数:void lv_port_indev_init(void);

在lv_conf.h中定义好屏幕的水平像素和垂直像素大小,顺手把LV_COLOR_DEPTH 改成自己TFT的对应多少位的颜色(根据实际情况改,如果屏幕是32位色就不用改)并定义显示屏尺寸

修改LVGL显示底层接口,把你的打点函数丢进去。

把lv_port_disp.c的里面的example 2 和3都注释了,只留example1,点击编译,编译通过,警告不用管,大多是因为定义了函数但是没有使用而报警告,不影响。

然后主函数中

创建lvgl事务处理任务,最后上个互斥锁之类的,我这直接当临界区,效果应该一样的,反正我跑起来了。

 创建一个显示页面任务。

 

创建任务

OK差不多了。可以跑起来了。

另外,我的是不带触屏的显示屏,触屏功能就没加进来。想要的朋友可以参考

STM32移植LVGL(LittleVGL)-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch:(二)3.安装Elasticsearch-head插件

1.环境安装介绍: 安装java环境安装Elasticsearch安装kibana安装Elasticsearch-head插件 本节文章主要讲解Elasticsearch-head的安装。 2.安装 这个head插接可以安装在本机客户端或者服务器都可以,这里讲解windows安装 2.1 安装依赖 下载node:下载地址:https://nodejs.or…

FlinkCDC基础篇章1-安装使用

1、下载、安装Flink 下载地址: Downloads | Apache Flink --------具体环境参考官网-------- 解压:tar zxf flink-XXXX-bin-scala_XXX.tgz 启动应用:./bin/start-cluster.sh 可访问:http://127.0.0.1:8081/ 校验 启动客户端…

SpringBoot(一)【入门】

前言 1、SpringBoot 快速入门 1.1、SpringBoot 简介 SpringBoot 是用来简化 Spring 应用的初始搭建以及开发过程 首先我们回顾一下 SpringMVC 项目的开发过程: 导入依赖(javax.servlet-api 和 spring-webmvc)Servlet 容器配置类&#xff…

227基于matlab的作业调度问题

基于matlab的作业调度问题。采用遗传算法,解决作业调度问题。一共三个作业,每个作业有不同的时间长度和紧急程度,超过时间会有惩罚措施。通过遗传算法计算出最好的作业安排,使得惩罚最小,获益最大。最终结果通过GUI用甘…

Maven 项目 JDK 8、JDK 17 多版本 Java 编译依赖最佳实践

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

已解决java.security.cert.CertificateException: 证书异常的正确解决方法,亲测有效!!!

已解决java.security.cert.CertificateException: 证书异常的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 检查证书的有效期 验证证书链 检查信任根证书 查看证书撤销列表 检查证书格式和完整性…

ubuntu下交叉编译ffmpeg到目标架构为aarch架构的系统

Ubuntu下FFmpeg的aarch64-linux-gnu架构交叉编译教程 一、前言 有时候真的很想报警的,嵌入式算法部署花了好多时间了,RKNN 1808真是问题不少;甲方那边也是老是提新要求,真是受不了。 由于做目标检测,在C代码中有对视…

Kingbase(人大金仓数据库)(总结全网精华,虚拟机:从安装到操作数据库一条龙)

前言: 前一阵子一直在捣鼓人大金仓数据库,虽然国产化的数据库很值得夸赞,但是网上的资料确实少的可怜。特此记录一下我在学习这个数据库的心酸历程。 安装就看这个大哥的,我之前安装就是看的他的,非常靠谱。 linux安装…

Embedding例子:简单NN网络、迁移学习例子

一、简单例子:构造简单NN网络生成Embedding 1、pytorch例子 2、tensorflow例子 # 1导入模块 import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding import numpy as np# 2构建语料库 corpus[[…

每日两题 / 22. 括号生成 54. 螺旋矩阵(LeetCode热题100)

22. 括号生成 - 力扣&#xff08;LeetCode&#xff09; dfs生成合法的括号序列即可 class Solution { public:vector<string> ans;void dfs(int l, int r, int n, string& s){if (s.size() n * 2){ans.push_back(s);return;}if (l){s "(";dfs(l - 1, …

Burpsuite插件 BurpAPIFinder专为未授权/敏感信息/越权而生

BurpAPIFinder 攻防演练过程中&#xff0c;我们通常会用浏览器访问一些资产&#xff0c;但很多未授权/敏感信息/越权隐匿在已访问接口过html、JS文件等&#xff0c;通过该Burp插件我们可以&#xff1a; 1、发现通过某接口可以进行未授权/越权获取到所有的账号密码、私钥、凭证 …

记录方式重新打开人生

文章目录 引言节省生命感知细节的能力正视痛苦总结 引言 你是否遇到以下问题 时间过得很快&#xff0c;不知道过去在忙什么事情很多很杂&#xff0c;感觉一直都很忙但是好像也没啥收获生活、工作中不顺心的事情很多&#xff0c;心里比较烦躁压抑 那么可以尝试参考《奇特的一…

python环境引用《解读》----- 环境隔离

首先我先讲一下Anaconda&#xff0c;因为我用的是Anaconda进行包管理。方便后面好理解一点。 大家在python中引用环境的时候都会经历下面这一步&#xff1a; 那么好多人就会出现以下问题&#xff08;我就是遇到了这个问题&#xff09;&#xff1a; 我明明下载了包&#xff0c…

吴恩达深度学习笔记:深度学习的 实践层面 (Practical aspects of Deep Learning)1.1-1.3

目录 第一门课&#xff1a;第二门课 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第一周&#xff1a;深度学习的 实践层面 (Practical aspects of Deep Learning)…

Rust 与 WebAssembly 构建前端应用

Yew 是一种用于创建多线程前端网络应用程序的现代Rust框架&#xff0c;其使用 WebAssembly 技术实现性能优化。这个框架支持与 JavaScript 的互操作性&#xff0c;使之不仅能够执行 JS 代码&#xff0c;并且还能够在 Rust 和 JavaScript 之间进行双向通信。Yew 框架具备了类似于…

阶段性学习汇报 4月19日

一、毕业设计和毕业论文 毕业设计后端功能基本实现&#xff0c;但是还有些具体的细节需要优化&#xff0c;例如这些图片的显示问题&#xff0c;前端只有个前端页面以及部分交互逻辑&#xff0c;还需进一步完善。我想在疾病预测这里加一个创新点&#xff0c;基于推荐算法。小程序…

sklearn【Accuracy】准确度介绍和案例学习!

一、Accuracy 介绍 在机器学习和数据科学中&#xff0c;准确度&#xff08;Accuracy&#xff09;是衡量分类模型性能的一个基本且重要的指标。准确度表示模型正确分类的样本数占总样本数的比例。Python的sklearn库提供了简单而强大的工具来训练和评估分类模型&#xff0c;包括…

测绘管理与法律法规 | 中华人民共和国测绘法 | 学习笔记

《中华人民共和国测绘法》笔记&#xff1a; 第一章 总则 第一条&#xff1a;立法目的&#xff0c;即加强测绘管理&#xff0c;促进测绘事业发展&#xff0c;保障测绘事业为经济建设、国防建设、社会发展和生态保护服务&#xff0c;维护国家地理信息安全。 第二条&#xff1a;…

leetcode 295 数据流中中位数

方法一 class MedianFinder:def __init__(self):from sortedcontainers import SortedListself.right 0self.arr SortedList()def addNum(self, num: int) -> None:self.arr.add(num)self.right 1def findMedian(self) -> float:if self.right % 2 0 :return self.a…

网络爬虫软件学习

1 什么是爬虫软件 爬虫软件&#xff0c;也称为网络爬虫或网络蜘蛛&#xff0c;是一种自动抓取万维网信息的程序或脚本。它基于一定的规则&#xff0c;自动地访问网页并抓取需要的信息。爬虫软件可以应用于大规模数据采集和分析&#xff0c;广泛应用于舆情监测、品牌竞争分析、…