解决:LVGL+GUI Guider 1.7.2运行一段时间就会卡死死机,内存泄露溢出的问题

概括:

我在使用NXP官方GUI Guider生成的代码出现了内存泄漏的问题。但我遇到的并不是像其他人所说的style的问题,如下链接。而是因为在页面渲染之前就使用了该页面内的组件,内存就会不断增加。

LVGL 死机 内存泄漏_lvgl 内存溢出-CSDN博客

运行环境:

stm32f407+LVGL8.3+GUI-Guider-1.7.2-GA

现象:

我设计了3个页面,单片机上电只会加载wifi页面,另两个页面并未加载:

打开lvgl的配置文件Iv_conf.h,开启 #define LV_USE_MEM_MONITOR 1 内存监控,发现内存在不断增加,出现内存泄漏的问题,直到内存耗尽到系统崩溃,看门狗复位单片机,如下图:

用memory_print()测试也是一样:

代码参考:https://blog.csdn.net/mygod2008ok/article/details/11030377

cpp 复制代码
/**
*  @brief print memory useage state
*  @param[in] void
*  @returnval  void
*/
void memory_print(void)
{
    lv_mem_monitor_t mon;
    lv_mem_monitor(&mon);
    printf("used: %6d (%3d %%), frag: %3d %%, biggest free: %6d\n", (int)mon.total_size - mon.free_size,
                mon.used_pct,
                mon.frag_pct,
                (int)mon.free_biggest_size);
}

原因:

GUI-Guider生成的代码中,setup_ui()中只有setup_scr_wifi(ui),也就是说初始化时默认只渲染了wifi一个页面:

如果用GUI-Guider设计,如果勾选了 load screen,其他页面会在我们点击按钮后才加载(包括渲染和跳转):

因为我用了定时器,所以单片机上电一秒后就会执行,但此时home页面还没被渲染,所以内存就会不断增加:

解决:

经过实验,如果在main()中初始化的时候加上setup_scr_home(ui),内存就不会增加了:

**1.**在main() 函数中,加上下图红框里的代码:

**2.**取消勾选 load screen

页面跳转,使用 lv_scr_load(guider_ui.home);

初学LVGL,如有不对,请指正

相关推荐
宁静致远20213 小时前
VSCode 开发 STM32 的 Keil工程 (Keil Assistant)
vscode·stm32·stm32cubeide
三块石头1013 小时前
车载ADC避坑:为什么ADC采集值偏低?
经验分享·stm32·单片机·嵌入式硬件·mcu·硬件架构·硬件工程
糖糖单片机设计4 小时前
基于 STM32 的智能净水器系统
stm32·单片机·嵌入式硬件
zcmodeltech4 小时前
火电厂模型能演示冷态启动和故障处理吗?——基于STM32与Modbus RTU的集控实训控制系统设计
数据结构·stm32·单片机·嵌入式硬件·能源
桀人4 小时前
STM32之GPIO四种输出模式——P-MOS和N-MOS管的工作原理——双二极管钳位保护电路——上拉电阻
stm32·单片机·嵌入式硬件
LCG元5 小时前
STM32F407 I2S驱动WM8978音频播放实战:PLLI2S时钟整定、DMA双缓冲防爆音与WAV采样率实测
stm32·嵌入式硬件·音视频
fhq_fn_jgd5 小时前
51单片机(中断,定时器)
stm32·单片机·嵌入式硬件
zhangzhangkeji5 小时前
stm32 笔记 - 2:库函数方式的初始化,项目的文件结构
stm32·arm
云泽8086 小时前
STM32 USART 详解(六):HAL库初始化及阻塞式收发源码拆解
stm32·单片机·嵌入式硬件
新晨单片机设计7 小时前
S014A-基于STM32单片机计算器(LCD1602显示)【Proteus仿真+Keil程序+原理图】
stm32·单片机·proteus