LVGL与STM32的理解(基于正点原子资料)

这篇具有很好参考价值的文章主要介绍了LVGL与STM32的理解(基于正点原子资料)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、概况

        LVGL能让你在嵌入式平台(stm32)相对容易的搞出比较绚丽的UI交互效果。也就是在LVGL制定的游戏规则下去开发UI界面,活好事少。为此硬件设备需要做一些适配,以达到:LVGL能够使用STM32的硬件资源;同时,在STM32编程后,效果又能落地到LVGL。(以下截图来是正点原子:LVGL开发指南_V1.5.pdf)

LVGL用起来需要四个资源:

1、心跳时钟,stm32提供给LVGL;

2、stm32驱动好的显示屏;

3、stm32驱动好的输入设备(触摸屏);

4、stm32的内存资源;

上面四个资源都需要与LVGL对接上(按照LVGL源码提供的规则接口对接),LVGL才能在stm32平台上正常使用。

2、LVGL的裁剪

        LVGL源码目录:

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

与 LVGL移植相关的有 examples文件夹(examples里面的porting文件是输出和输入设备驱动)、src文件夹、lv_conf_template.hlvgl.h,其他的部分均与移植无关,用户可以忽略

以下是stm32工程的文件目录,GUI_APP也可以忽略(细节参考正点原子例程):这里主要是再次加强一下印象,主要就是把examples文件(里面只有porting有用)和src文件放入STM32的工程,lv_conf_template.h(改名为lv_conf.h)lvgl.h也一起放在。

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

综上就是从LVGL的源码里面,拿出:examples、src、lv_conf.h、lvgl.h,放到Middlewares/LVGL/GUI/lvgl目录下

3、LVGL启动流程

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

lv_task_handler就是lv_timer_handler

3、LVGL与MCU资源

 (1)时钟:就是在STM32每定时1ms的间隔里面调用一下函数lv_tick_inc:

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

(2)显示屏:LVGL如何识别到屏,以及如何使用屏

1、初始化:处理屏的硬件的驱动

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

lcddev是自己定义的类型,与LVGL没有关系;

disp_init()是LVGL接口,里面的lcd_init()与lcd_display_dir是自己实现的代码;主要完成的工作是:调通LCD硬件驱动,并且填充好了lcddev,lcddev结构体方便自己使用;

2、屏的缓存区设置:

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

lv_disp_draw_buf_t、lv_color_t、函数lv_disp_draw_buf_init,它们都是LVGL的接口

这一步把draw_buf_dsc_1缓存搞好了(下一步会把它个设备绑定一起)

3、在LVGL中注册显示设备: LVGL只认注册设备disp_drv

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

以上主要填充disp_drv的内容(disp_drv属于LVGL的类型lv_disp_drv_t)

包含属性有:分辨率、缓存区、显示刷新操作等

 注册完后,LVGL只认disp_drv,disp_drv也就是屏幕

最关键的显示刷新disp_flush函数:LVGL把数据显示到屏是通过disp_flush。

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

LVGL会间隔的调用disp_flush以刷新屏幕。disp_flush、lcd_draw_fast_rgb_color、lv_disp_flush_ready这三个函数都是LVGL的函数,

我们要在lcd_draw_fast_rgb_color里面实现对屏的具体操作(也就是在这里实现自己的代码)。lcd_set_window、lcd_write_ram_prepare、lcd_wr_data这三个函数是本例程LCD屏的控制函数(也就是自己写的函数)。

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

综上

屏幕的大小:disp_drv.hor_res = lcddev.width; disp_drv.ver_res = lcddev.height;

屏幕的缓存也有了:disp_drv.draw_buf = &draw_buf_dsc_1;、

也知道如何使用屏幕:disp_drv.flush_cb = disp_flush;

LCD屏能够正常被LVGL使用。

(3)触摸屏

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

1、touchpad_init()这是LVGL的接口,里面实现了(根据具体情况自己完成)触摸屏的驱动

2、touchpad_read是LVGL的接口,它需要获取是否按下,按下的坐标多少;

        touchpad_read调用了touchpad_is_pressed、touchpad_get_xy它们都是LVGL的接口,按照它们的需求,把内容给它们即可。

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

5、配置文件lv_conf.h

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

LVGL与STM32的理解(基于正点原子资料),stm32,嵌入式硬件,单片机

这个文件主要就是开启某些功能,结合具体硬件配置一些宏。详细看正点原子的相关资料或者视频。文章来源地址https://www.toymoban.com/news/detail-817385.html

到了这里,关于LVGL与STM32的理解(基于正点原子资料)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正点原子STM32(基于HAL库)1

    正点原子B站视频地址:https://www.bilibili.com/video/BV1bv4y1R7dp?p=1vd_source=cc0e43b449de7e8663ca1f89dd5fea7d STM32芯片分类 ST中文社区网:https://www.stmcu.org.cn/ ST官网:https://www.st.com/content/st_com/en.html 了解了STM32 的系列和命名以后,我们再进行STM32 选型就会比较容易了,这里我们只要遵循:由高

    2023年04月23日
    浏览(78)
  • 基于STM32的正点原子LORA模块通信网络

    LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称“LoRa”是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播的距离更远,实现了低功耗和远距离的统一,它在同样的功耗下比传统的无线射频通信距离扩大3-5倍。 距离往往可达

    2023年04月08日
    浏览(41)
  • 基于STM32的智能灯光亮度调节器【正点原子】(一)

    第一章 PWM调节 第二章 ADC采样 第三章 光敏传感器 第四章 智能灯光亮度调节器(终) 目录 前言 一、PWM是什么? 二、如何产生一个PWM信号? 总结 本文实现的是一个智能灯光亮度调节器的设计,使用STM32F103ZE的单片机,可以手动调节灯光档位,也可以自动根据环境亮度进行切

    2024年02月09日
    浏览(54)
  • 【STM32】使用CubeMX快速创建FreeRTOS的基础工程,基于正点原子

    【STM32】HAL库 新建MDK工程 【STM32】HAL库 串口轮询发送 【STM32】HAL库 LED闪烁、流水灯 【STM32】HAL库 定时器中断 【STM32】HAL库 外部中断 使用STM32F103C8T6开发板,用STM32CubeMX配置FreeRTOS,可以适配正点原子FreeRTOS所有实验的基础工程 HAL的时基不能选择系统定时器 PA0和PA1输出模式,

    2024年02月19日
    浏览(50)
  • 基于STM32 RS485传感器数据采集(参考正点原子部分代码)

    目前工业上,传感器一般都选RS485,modbus通讯协议,这种通讯方式,有很强的鲁棒性,本篇文章基于原子哥的精英板进行开发。 1、初始化与电脑通信的串口(PA9 PA10) 2、采用串口中断将数据保存到数组buff中 3、用定时器来配置一帧字节是否结束(空闲时间指定时间) 5、从机

    2024年02月11日
    浏览(44)
  • 基于STM32F103ZET6使用STM32CubeMX配置FSMC模块驱动LCD屏(基于正点原子历程)

    在学习STM32的过程中,刚好学到了LCD屏,我使用的是STM32F103ZET6,屏幕是正点原子的。但是在我自己新建工程点亮显示LCD屏时遇到了很多问题。解决之后分享在此,希望能帮助到遇到此困惑的朋友。 想要快速驱动LCD屏请直接跳转到CubeMX配置 FSMC全名叫可变静态存储控制器(Fle

    2024年02月15日
    浏览(53)
  • 2.基于正点原子STM32F103的定时器中断实验(HAL库实现)(cubeMX)

      基本上每一款MCU都会配备定时器这个外设,STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 同样,STM32F1系列的定时器功能也很强大,包括: TIM1和TIM8两个高级定时器; TIM2~TIM5是个通用寄存器; TIM7,TIM8,两个基本定时器。 由于本次实验适用于新手入门

    2023年04月26日
    浏览(158)
  • 【正点原子STM32连载】 第十章 STM32CubeMX简介 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html STM32CubeMX是由ST公司开发的图形化代码自动生成工具,能够快速生成初始化代码,如配置GPIO,时钟树

    2024年01月15日
    浏览(55)
  • 【正点原子STM32连载】 第三十章 ADC实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html 本章,我们将介绍STM32F103的ADC(Analog-to-digital converters,模数转换器)功能。我们通过四个实验来学习

    2024年02月03日
    浏览(62)
  • 【正点原子STM32连载】第六十六章 综合测试实验摘自【正点原子】STM32F103 战舰开发指南V1.2

    1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视频下载地址: http://www.openedv.com/thread-340252-1-1.html# 为了方便大家使用和验证综合例程,本章内容是综合例程的使用介绍。目的是展示STM32F1的强大处理

    2024年02月02日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包