LVGL定时器与周期性任务
上周调试一个智能家居面板项目,屏幕上的温湿度数值每三秒刷新一次,但运行两小时后数值更新突然卡住——不是死机,而是更新频率变成了随机间隔。用逻辑分析仪抓了LVGL的任务调度,发现定时器回调里塞了一个lv_task_delay(100),直接把整个事件循环堵死了。这种坑,踩过一次就再也不会忘了。
LVGL定时器的本质
LVGL的定时器不是硬件定时器,而是基于lv_tick系统时钟的软件定时器。核心数据结构藏在lv_timer.c里:
typedefstruct_lv_timer_t{uint32_tperiod;// 周期,单位毫秒uint32_tlast_run