1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-14 06:42:58 +08:00
lvgl/docs/porting/sleep.md
Xiang Xiao 343c61375b
fix(config): remove LV_DISP_DEF_REFR_PERIOD related stuff (#3512)
* fix(config): remove LV_DISP_DEF_REFR_PERIOD related stuff

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>

* fix(config): remove LV_INDEV_DEF_READ_PERIOD related stuff

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
2022-07-23 00:27:48 +02:00

978 B

Sleep management

The MCU can go to sleep when no user input happens. In this case, the main while(1) should look like this:

while(1) {
  /*Normal operation (no sleep) in < 1 sec inactivity*/
  if(lv_disp_get_inactive_time(NULL) < 1000) {
	  lv_task_handler();
  }
  /*Sleep after 1 sec inactivity*/
  else {
	  timer_stop();   /*Stop the timer where lv_tick_inc() is called*/
	  sleep();		    /*Sleep the MCU*/
  }
  my_delay_ms(5);
}

You should also add the following lines to your input device read function to signal a wake-up (press, touch or click etc.) has happened:

lv_tick_inc(LV_DEF_REFR_PERIOD); /*Force task execution on wake-up*/
timer_start();                   /*Restart the timer where lv_tick_inc() is called*/
lv_task_handler();               /*Call `lv_task_handler()` manually to process the wake-up event*/

In addition to lv_disp_get_inactive_time() you can check lv_anim_count_running() to see if all animations have finished.