您的位置:首页 > 新闻 > 热点要闻 > 看强 的_搜索引擎营销是什么_seo如何优化关键词排名_东莞做网站哪家公司好

看强 的_搜索引擎营销是什么_seo如何优化关键词排名_东莞做网站哪家公司好

2025/2/25 4:18:40 来源:https://blog.csdn.net/darlingqx/article/details/145793100  浏览:    关键词:看强 的_搜索引擎营销是什么_seo如何优化关键词排名_东莞做网站哪家公司好
看强 的_搜索引擎营销是什么_seo如何优化关键词排名_东莞做网站哪家公司好

ESP32移植LVGL教程

  • 效果图
  • 下载lvgl
  • 移植相关文件
  • 更改相关配置文件
    • lv_config.h
    • main/CMakeLists.txt
    • main.c
  • 其它代码
    • Src/bsp_lcd.c
    • Include/bsp_lcd.h
  • 工程文件下载

软件版本:

  • lvgl -> 9.3.0
  • idf -> 4.4.0

硬件需求:

  • ESP32S3
  • 一块调试好能够显示的屏幕,这里我使用的是ST7789 驱动的240×320TFT屏幕

效果图

在这里插入图片描述

下载lvgl

先下载lvgl点击这里,在这里插入图片描述
下载完成之后,进行解压即可

移植相关文件

先在自己的项目目录下新建一个lvgl文件夹,做完之后看我的项目文件路径看是否正确:

->My_LVGL_Demo->main->Include #存放自己写的头文件->Src #存放自己写的源文件->lvgl #存放lvgl相关文件->main.c->CMakeLists.txt->CMakeLists.txt

然后就可以开始移植lvgl了,先看看解压之后我们需要什么文件,如下图所示。
在这里插入图片描述
文件夹的画只需要src文件夹,将它复制到项目中创建的lvgl目录下。
然后移植相关文件。如下图所示。
在这里插入图片描述
lvgl.hlv_version.h移植到lvgl目录下,然后将lv_conf_template.h先改名为lv_conf.h再移植到main目录下,即与lvgl目录同级下。
移植完成后的目录如下所示:

->My_LVGL_Demo->main->Include #存放自己写的头文件->Src #存放自己写的源文件->lvgl #存放lvgl相关文件->src->lv_version.h->lvgl.h->main.c->lv_conf.h->CMakeLists.txt->CMakeLists.txt

这样,lvgl的文件就相当于移植成功了。

更改相关配置文件

lv_config.h

首先是第15行的#if 0要改成#if 1
在这里插入图片描述
然后就是第30行的#define LV_COLOR_DEPTH 16要改成自己屏幕的颜色格式,这里我用是RGB565,所有就是16
在这里插入图片描述
如果你只需要这些基本改完,这里例如我自己增加了一种字体大小,就改了如下所示的地方,默认是只有14号字体大小,这里增加了30号字体。

在这里插入图片描述
还有一些其它的配置,可以去看官方文档点击这里。

main/CMakeLists.txt

main/CMakeLists.txt肯定是要改的,我们需要把lvgl需要的头文件和源文件增加进去,注意是main下面的CMakeLists.txt。

file(GLOB_RECURSE COMPONENT_SOURCES "Src/*.c")
file(GLOB_RECURSE LVGL_COMPONENT_SOURCES "lvgl/src/*.c")idf_component_register(SRCS ${COMPONENT_SOURCES}${LVGL_COMPONENT_SOURCES}"main.c"INCLUDE_DIRS ".""lvgl/""lvgl/src/""lvgl/src/core/""lvgl/src/display/""lvgl/src/draw/""lvgl/src/drivers/""lvgl/src/font/""lvgl/src/indev/""lvgl/src/layouts/""lvgl/src/libs/""lvgl/src/misc/""lvgl/src/osal/""lvgl/src/others/""lvgl/src/stdlib/""lvgl/src/themes/""lvgl/src/tick/""lvgl/src/widgets/""Include/"REQUIRES driver freertos)

main.c

最后就是main.c文件了

#include <stdio.h>
#include "bsp_lcd.h"
#include "lvgl/lvgl.h"
#include "lvgl/lv_version.h"
#include "esp_timer.h"spi_device_handle_t my_spi = NULL;
#define BYTES_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565))
static uint8_t buf1[1024];uint32_t my_tick_get_cb(void)
{register uint32_t ms_result;ms_result = (uint32_t)esp_timer_get_time();return ms_result;
}void my_flush_cb(lv_display_t * display, const lv_area_t * area, uint8_t * px_map)
{lcd_full_area(my_spi, area, px_map);lv_display_flush_ready(display);
}void app_main(void)
{printf("LVGL Version: lvgl(%d.%d.%d)\n", LVGL_VERSION_MAJOR, LVGL_VERSION_MINOR, LVGL_VERSION_PATCH);lv_init();my_spi = spi_init();lcd_init(my_spi);lv_tick_set_cb(my_tick_get_cb);lv_display_t * display1 = lv_display_create(LCD_W, LCD_H);lv_display_set_buffers(display1, buf1, NULL, sizeof(buf1), LV_DISPLAY_RENDER_MODE_PARTIAL);lv_display_set_flush_cb(display1, my_flush_cb);// 设置屏幕背景颜色为黑色lv_obj_set_style_bg_color(lv_scr_act(), lv_color_black(), LV_PART_MAIN);// 创建一个标签,设置父对象为屏幕,文本为"hello lvgl"lv_obj_t * label = lv_label_create(lv_scr_act());lv_label_set_text(label, "hello lvgl");// 设置标签的样式static lv_style_t style;lv_style_init(&style);lv_style_set_bg_color(&style, lv_color_black());  // 设置背景颜色为黑色lv_style_set_text_color(&style, lv_color_white());  // 设置文本颜色为白色lv_style_set_text_font(&style, &lv_font_montserrat_30);  // 设置字体大小lv_obj_add_style(label, &style, 0);  // 应用样式到标签// 设置标签对齐为中心lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);// 主循环需要运行 LVGL 的事件处理while (1){lv_timer_handler_run_in_period(5);// printf("hello world!!!\r\n");}
}

值得注意一下的是#define BYTES_PER_PIXEL (LV_COLOR_FORMAT_GET_SIZE(LV_COLOR_FORMAT_RGB565))这里要换成自己的颜色深度。

void my_flush_cb(lv_display_t * display, const lv_area_t * area, uint8_t * px_map)
{lcd_full_area(my_spi, area, px_map);

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com