You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
996 B
Markdown
28 lines
996 B
Markdown
2 years ago
|
# Sleep management
|
||
|
|
||
|
The MCU can go to sleep when no user input happens. In this case, the main `while(1)` should look like this:
|
||
|
|
||
|
```c
|
||
|
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:
|
||
|
```c
|
||
|
lv_tick_inc(LV_DISP_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.
|