页面数据更新方式问题

正在计划用LVGL做项目,目前在学习中。想请教几个问题
1、页面有很多个数据参数需要实时刷新,用什么方式刷新数据?
2、UI设计内容,LCD上边有个状态栏显示,LCD下边部分有功能按键显示,这两部在在任何页面下都是正 常显示的,中间部分就是数据显示。这个有没有参考设计架构。
3、LCD下边的功能按键需要实体按键响应,而中间显示内容当切换到设置页面的时候,也需要响应实体按键,问题就是实体按键如何发送到这两个地方都能响应。

  1. 如果你跑了RTOS可以通过任务去通知lvgl刷新:当任务检测到有数据时将数据交给刷新显示;如果你是linux上运行也是同理;如果是裸机那可以用lvgl的定时器定时刷新数据。
  2. 可以使用lvgl的Fragment;也可以自己实现,需要在所有地方都要显示出来的部分通过 lv_layer_top() 或 lv_layer_sys() 创建,效果也和 Fragment 差不多,但是存在资源消耗问题
  3. lvgl的事件可以给多个组件使用,一个组件一个绑定多个事件,先阅读文档:http://lvgl.100ask.net/8.2/overview/event.html

跑的是RTOS可以通过任务去通知lvgl刷新:当任务检测到有数据时将数据交给刷新显示。这个能更具体一些吗?还是不太理解。我是初步搭建了一个软件架构,LVGL部分如下,看到LVGL是非安全线程的,你说用一个任务去刷新lvgl,所以不太理解具体什么实现。

void StartTaskGUI(void argument)
{
/
USER CODE BEGIN StartTaskGUI /
/
Infinite loop */
uint32_t i;

MX_LTDC_Init();			// LTDC以及层初始化
	
lv_init();
lv_port_disp_init();
lv_port_indev_init();
   
GuiMainTask();

//lv_demo_benchmark();
for (;;)
{
	lv_task_handler();
	osDelay(10);
}

也想问一下,有没有freertos上运行lvgl的参考工程

如果使用rtos,那lvgl本身就是一个任务,你可以创建其他任务来获取数据,比如获取电池的实时数据,lvgl只是负责将数据展示,也就是读取数据,这种情况可以不考虑线程安全问题;如果你在另外一个任务中获取到数据的同时,直接通过lvgl刷新展示,这个时候就存在线程安全问题,需要去调整优化。

freeRTOS之前有103pro的工程,但是没有发布出来,我们尽快整理分享出来