今天在一块板子上调试LVGL一运行就卡死调试半天没有发现问题。LCD驱动确认无误直接调LCD驱动可以正常显示。调试跟踪发现是在调用lv_timer_handler时卡死中间调用了一些内存管理函数最终进入Hardfalut.运行环境是STM32L4 Freertos lvgl8.3液晶分辨率240*24016位色根据现象判断大体应该是内存溢出.所以先后加大了任务栈和LV_MEM_SIZE宏。但是问题依旧。上网搜索有朋友提到了GD32的两片不连续内存的问题我感觉豁然开朗因为我用的MCU也是两片不连续内存接下来赶紧改了分散加载表继续测试仍然不行问题依旧。中间又折腾了半天改了lv_tick_inc(1)的调用方式改了启动文件里的系统堆和栈的大小改了显示画面。。。都不行。直到又看见一篇文章提到任务栈大小需要加大。我再次尝试加大了任务栈故障排除顺利运行。为了搞清lvgl运行时到底需要多大栈空间我做个了测试用gui Guider生成一个最简单的页面如图所示然后建立GUI TASK分配8192栈空间32KB栈空间类型使用uint32定义的然后打印出任务状体和最高水位最后测试结果如下也就是说LVGL只要跑起来即使最简单的画面至少也要2060字节以上的任务栈空间。是我一开始估计的小了导致即使我加大一次也只加到了1024字节任务栈问题一直不能解决。如果以上方式不能解决你的问题还可以参考以下文章https://blog.csdn.net/weixin_29178069/article/details/158982059https://blog.csdn.net/m0_48573736/article/details/141499855
LVGL运行lv_timer_handler时卡死
今天在一块板子上调试LVGL一运行就卡死调试半天没有发现问题。LCD驱动确认无误直接调LCD驱动可以正常显示。调试跟踪发现是在调用lv_timer_handler时卡死中间调用了一些内存管理函数最终进入Hardfalut.运行环境是STM32L4 Freertos lvgl8.3液晶分辨率240*24016位色根据现象判断大体应该是内存溢出.所以先后加大了任务栈和LV_MEM_SIZE宏。但是问题依旧。上网搜索有朋友提到了GD32的两片不连续内存的问题我感觉豁然开朗因为我用的MCU也是两片不连续内存接下来赶紧改了分散加载表继续测试仍然不行问题依旧。中间又折腾了半天改了lv_tick_inc(1)的调用方式改了启动文件里的系统堆和栈的大小改了显示画面。。。都不行。直到又看见一篇文章提到任务栈大小需要加大。我再次尝试加大了任务栈故障排除顺利运行。为了搞清lvgl运行时到底需要多大栈空间我做个了测试用gui Guider生成一个最简单的页面如图所示然后建立GUI TASK分配8192栈空间32KB栈空间类型使用uint32定义的然后打印出任务状体和最高水位最后测试结果如下也就是说LVGL只要跑起来即使最简单的画面至少也要2060字节以上的任务栈空间。是我一开始估计的小了导致即使我加大一次也只加到了1024字节任务栈问题一直不能解决。如果以上方式不能解决你的问题还可以参考以下文章https://blog.csdn.net/weixin_29178069/article/details/158982059https://blog.csdn.net/m0_48573736/article/details/141499855