init Files
This commit is contained in:
59
libraries/lvgl/docs/porting/timer_handler.rst
Normal file
59
libraries/lvgl/docs/porting/timer_handler.rst
Normal file
@@ -0,0 +1,59 @@
|
||||
.. _timer:
|
||||
|
||||
=============
|
||||
Timer Handler
|
||||
=============
|
||||
|
||||
To handle the tasks of LVGL you need to call :cpp:func:`lv_timer_handler`
|
||||
periodically in one of the following:
|
||||
|
||||
- *while(1)* of *main()* function
|
||||
- timer interrupt periodically (lower priority than :cpp:func:`lv_tick_inc`)
|
||||
- an OS task periodically
|
||||
|
||||
Example:
|
||||
|
||||
.. code:: c
|
||||
|
||||
while(1) {
|
||||
uint32_t time_till_next = lv_timer_handler();
|
||||
my_delay_ms(time_till_next);
|
||||
}
|
||||
|
||||
If you want to use :cpp:func:`lv_timer_handler` in a super-loop, a helper
|
||||
function :cpp:func:`lv_timer_handler_run_in_period` is provided to simplify
|
||||
the porting:
|
||||
|
||||
.. code:: c
|
||||
|
||||
while(1) {
|
||||
...
|
||||
lv_timer_handler_run_in_period(5); /* run lv_timer_handler() every 5ms */
|
||||
...
|
||||
}
|
||||
|
||||
Or use the sleep time automatically calculated by LVGL:
|
||||
|
||||
.. code:: c
|
||||
|
||||
while(1) {
|
||||
...
|
||||
lv_timer_periodic_handler();
|
||||
...
|
||||
}
|
||||
|
||||
In an OS environment, you can use it together with the **delay** or
|
||||
**sleep** provided by OS to release CPU whenever possible:
|
||||
|
||||
.. code:: c
|
||||
|
||||
while (1) {
|
||||
uint32_t time_till_next = lv_timer_handler();
|
||||
os_delay_ms(time_till_next); /* delay to avoid unnecessary polling */
|
||||
}
|
||||
|
||||
To learn more about timers visit the :ref:`timer`
|
||||
section.
|
||||
|
||||
API
|
||||
***
|
||||
Reference in New Issue
Block a user