App:Library:LVGL:docs:Porting:Sleep management
提供: robot-jp wiki
https://docs.lvgl.io/8.2/porting/sleep.html
英文 | 自動翻訳 |
---|---|
Sleep management
英文 | 自動翻訳 |
---|---|
The MCU can go to sleep when no user input happens. In this case, the main 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_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 |
ユーザー入力が発生しない場合、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()`を呼び出します* / さらに、すべてのアニメーションが終了したかどうかを |