睡眠管理¶
当没有用户输入时,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() 以查看是否所有动画都已完成。