App:Library:LVGL:docs:Overview:Timers
https://docs.lvgl.io/8.2/overview/timer.html
Timers
英文 | 自動翻訳 |
---|---|
LVGL has a built-in timer system. You can register a function to have it be called periodically. The timers are handled and called in See Porting for more information. Timers are non-preemptive, which means a timer cannot interrupt another timer. Therefore, you can call any LVGL related function in a timer. |
LVGLはタイマーシステムを内蔵しています。
関数を登録することで、定期的に呼び出されるようにすることができます。 タイマーは 詳しくは移植を参照してください。 タイマーはノンプリエンプティブです。つまり、タイマーは他のタイマーを中断することができません。 したがって、タイマーの中でLVGLに関連するあらゆる関数を呼び出すことができます。 |
Create a timer
英文 | 自動翻訳 |
---|---|
To create a new timer, use It will create an This allows you to create a new timer without specifying any parameters. A timer callback should have a For example: void my_timer(lv_timer_t * timer)
{
/*Use the user_data*/
uint32_t * user_data = timer->user_data;
printf("my_timer called with user data: %d\n", *user_data);
/*Do something with LVGL*/
if(something_happened) {
something_happened = false;
lv_btn_create(lv_scr_act(), NULL);
}
}
...
static uint32_t user_data = 10;
lv_timer_t * timer = lv_timer_create(my_timer, 500, &user_data);
|
タイマーを新規に作成するには、lv_timer_create(timer_cb, period_ms, user_data) を使用します。
これは
これは、パラメータを指定せずに新しいタイマーを作成することができます。 タイマーのコールバックは、 void my_timer(lv_timer_t * timer)
{
/*Use the user_data*/
uint32_t * user_data = timer->user_data;
printf("my_timer called with user data: %d\n", *user_data);
/*Do something with LVGL*/
if(something_happened) {
something_happened = false;
lv_btn_create(lv_scr_act(), NULL);
}
}
...
static uint32_t user_data = 10;
lv_timer_t * timer = lv_timer_create(my_timer, 500, &user_data);
|
Ready and Reset
英文 | 自動翻訳 |
---|---|
It will be called again after the defined period of milliseconds has elapsed. |
lv_timer_ready(timer) は、次のlv_timer_handler() のコールでタイマーを実行させる。
定義されたミリ秒の期間が経過すると、再び呼び出されます。 |
Set parameters
英文 | 自動翻訳 |
---|---|
You can modify some timer parameters later:
|
タイマーのパラメータは後で変更することができます.
|
Repeat count
英文 | 自動翻訳 |
---|---|
You can make a timer repeat only a given number of times with The timer will automatically be deleted after it's called the defined number of times. Set the count to |
lv_timer_set_repeat_count(timer, count) で指定した回数だけタイマーを繰り返すようにすることができます。
タイマーは指定された回数だけ呼び出された後、自動的に削除されます。 カウントを |
Measure idle time
英文 | 自動翻訳 |
---|---|
You can get the idle percentage time of Note that, it doesn't measure the idle time of the overall system, only It can be misleading if you use an operating system and call |
lv_timer_handler のアイドルパーセント時間は lv_timer_get_idle() で得ることができます。
注意:これはシステム全体のアイドル時間を測定しているわけではなく、 OSを使用していて、タイマーで |
Asynchronous calls
英文 | 自動翻訳 |
---|---|
In some cases, you can't perform an action immediately. For example, you can't delete an object because something else is still using it, or you don't want to block the execution now.
It can be static, global or dynamically allocated data. For example: void my_screen_clean_up(void * scr)
{
/*Free some resources related to `scr`*/
/*Finally delete the screen*/
lv_obj_del(scr);
}
...
/*Do something with the object on the current screen*/
/*Delete screen on next call of `lv_timer_handler`, not right now.*/
lv_async_call(my_screen_clean_up, lv_scr_act());
/*The screen is still valid so you can do other things with it*/
|
場合によっては、アクションをすぐに実行できないことがあります。
たとえば、他のユーザーがまだオブジェクトを使用しているため、または実行をブロックしたくないために、オブジェクトを削除することはできません。
静的、グローバル、または動的に割り当てられたデータです。 例: void my_screen_clean_up(void * scr)
{
/*Free some resources related to `scr`*/
/*Finally delete the screen*/
lv_obj_del(scr);
}
...
/*Do something with the object on the current screen*/
/*Delete screen on next call of `lv_timer_handler`, not right now.*/
lv_async_call(my_screen_clean_up, lv_scr_act());
/*The screen is still valid so you can do other things with it*/
|
API
英文 | 自動翻訳 |
---|---|
Typedefs typedef void (*lv_timer_cb_t)(struct _lv_timer_t*)
typedef struct _lv_timer_t lv_timer_t
Functions void _lv_timer_core_init(void)
lv_timer_t *lv_timer_create(lv_timer_cb_t timer_xcb, uint32_t period, void *user_data)
void lv_timer_del(lv_timer_t *timer)
void lv_timer_pause(lv_timer_t *timer)
void lv_timer_resume(lv_timer_t *timer) void lv_timer_set_cb(lv_timer_t *timer, lv_timer_cb_t timer_cb)
void lv_timer_set_period(lv_timer_t *timer, uint32_t period)
void lv_timer_ready(lv_timer_t *timer)
void lv_timer_set_repeat_count(lv_timer_t *timer, int32_t repeat_count)
void lv_timer_reset(lv_timer_t *timer)
void lv_timer_enable(bool en)
uint8_t lv_timer_get_idle(void)
lv_timer_t *lv_timer_get_next(lv_timer_t *timer)
struct _lv_timer_t
Typedefs typedef void (*lv_async_cb_t)(void*)
Functions lv_res_t lv_async_call(lv_async_cb_t async_xcb, void *user_data)
|
Typedefs
typedef void (*lv_timer_cb_t)(struct _lv_timer_t*)
typedef struct _lv_timer_t lv_timer_t
Functions void _lv_timer_core_init(void)
lv_timer_t *lv_timer_create(lv_timer_cb_t timer_xcb, uint32_t period, void *user_data)
void lv_timer_del(lv_timer_t *timer)
void lv_timer_pause(lv_timer_t *timer)
void lv_timer_resume(lv_timer_t *timer) void lv_timer_set_cb(lv_timer_t *timer, lv_timer_cb_t timer_cb)
void lv_timer_set_period(lv_timer_t *timer, uint32_t period)
void lv_timer_ready(lv_timer_t *timer)
void lv_timer_set_repeat_count(lv_timer_t *timer, int32_t repeat_count)
void lv_timer_reset(lv_timer_t *timer)
void lv_timer_enable(bool en)
uint8_t lv_timer_get_idle(void)
lv_timer_t *lv_timer_get_next(lv_timer_t *timer)
struct _lv_timer_t
Typedefs typedef void (*lv_async_cb_t)(void*)
Functions lv_res_t lv_async_call(lv_async_cb_t async_xcb, void *user_data)
|