睡眠管理

当没有用户输入时,MCU 可以进入睡眠状态。在这种情况下,主 while(1) 循环应如下所示:

while(1) {
  /*正常操作(无睡眠),在小于 1 秒的非活动时间内*/
  if(lv_disp_get_inactive_time(NULL) < 1000) {
	  lv_task_handler();
  }
  /*在 1 秒非活动后进入睡眠*/
  else {
	  timer_stop();   /*停止调用 lv_tick_inc() 的定时器*/
	  sleep();		    /*让 MCU 进入睡眠*/
  }
  my_delay_ms(5);
}

您还应该在输入设备读取函数中添加以下几行代码,以表示发生了唤醒事件(按下、触摸或点击等):

lv_tick_inc(LV_DISP_DEF_REFR_PERIOD);  /*在唤醒时强制任务执行*/
timer_start();                         /*重新启动调用 lv_tick_inc() 的定时器*/
lv_task_handler();                     /*手动调用 `lv_task_handler()` 以处理唤醒事件*/

除了 lv_disp_get_inactive_time(),您还可以检查 lv_anim_count_running() 以查看是否所有动画都已完成。