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博客

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值