LVGL默认情况下 不是线程安全的 。
但是,在以下情况中,调用 LVGL 相关函数是有效的:
- 在事件 (Events) 中。在 "事件" 中了解更多信息。
- 在 (lv_tasks) 中。在 "任务" 中了解更多信息。
任务和线程
如果需要使用实际的任务或线程,则需要一个互斥锁,该互斥锁应在调用 lv_taskhandler 之前被调用,并在其之后释放。同样,必须在与每个LVGL(lv …)相关的函数调用和代码周围的其他任务和线程中使用相同的互斥锁。这样,就可以在真正的多任务环境中使用LVGL。只需使用互斥锁(mutex)即可避免同时调用 LVGL 函数。
中断
避免从中断中调用 LVGL 函数( lv_tick_inc() 和 lv_disp_flush_ready() 除外)。但是,如果需要执行此操作,则必须在 lv_task_handler 运行时禁用 LVGL 函数的中断。设置标志或某个值并在 lv_task 中定期检查是一种不错的方法。