FreeRTOS & LVGL问题集锦

1. 在使用ESP32中 使用label显示带1位小数点的浮点数,要使用lv_label_set_text_fmt(LabelBatteryVoltage, "%.1f V", ((float)DeviceCurrState.CurrVoltage / 1000)),但是显示的确实:f V

解决方案:1. 主要是由于配置问题,打开lv_conf.h配置文件,将#define LV_SPRINTF_CUSTOM 设置为1即可; 2. 如果使用的是ESP32工程项目,则使能menuconfig -> Component config -> LVGL configuration -> Feature configuration -> Others -> Enable float in built-in (v) snprintf functions项即可。

2. 使用LVGL自带字体(lv_font_simsun_16_cjk)可以显示少量汉字,不能显示全部中文内容。需要使用自定义汉字库,然后按照网上教程,使用LVGL官网的字体转换工具将.tff字库转换成C文件,然后声明LV_FONT_DECLARE(lv_font_sourcehannormal_14),最后调用。但目前显示有问题,运行到显示汉字内容时会死机,然后一直重启,目前未发现有效解决方案,待改进-20250729

### FreeRTOSLVGL的集成 #### 集成概述 为了使嵌入式系统具备高效的图形用户界面,FreeRTOSLVGL的组合提供了强大的支持。这种集成为开发者提供了一个稳定的操作环境来运行复杂的GUI应用程序[^3]。 #### 修改Makefile配置 在`Makefile`中加入对LVGL的支持非常简单。只需设置变量`USE_LVGL?=y`表示启用LVGL库编译;反之则设为`n`关闭该特性[^1]: ```makefile # Build with lvgl, y:yes, n:no USE_LVGL ?= y ``` #### 文件结构规划 合理安排项目文件夹有助于提高代码可维护性和扩展性。建议创建如下所示的应用程序层次结构,在其中分别放置不同类型的源码文件和头文件[^4]: - `Application/inc`: 应用层接口定义 - `Application/src`: 实现具体业务逻辑的功能模块 - `FunctionModuleLayer/inc`: 功能组件公共API声明 - `FunctionModuleLayer/src`: 各种独立功能单元的具体实现细节 针对LVGL部分,则应进一步细分为四个主要子目录[^2]: - `LVGL/Src`: 存放核心绘图引擎及相关算法实现代碼 - `LVGL/Port`: 平台适配层,负责对接底层硬件资源访问操作 - `LVGL/Cfg`: 用户自定义配置参数设定区域 - `LVGL/Demo`: 示例工程展示如何利用上述各部件构建完整的UI场景 #### 维持LVGL心跳机制 为了让LVGL正常工作并响应触摸屏输入、执行动画效果等功能,必须定期调用其任务处理函数。通常情况下可以在FreeRTOS环境中通过创建一个专用线程完成这一职责[^5]。下面给出一段简单的C语言伪代码片段用于说明此过程: ```c void vLvglTask(void *pvParameters) { while (true) { /* 调度器延时一段时间 */ vTaskDelay(pdMS_TO_TICKS(REFRESH_RATE_MS)); /* 更新显示缓冲区内容到物理屏幕 */ lv_task_handler(); // 处理其他必要的后台作业... } } ``` 在此基础上还需要初始化阶段启动这条新建立的任务实例,并传入合适的优先级和其他属性值以确保整个系统的流畅运作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值