improve rt-thread initialization process (#3345)
This commit is contained in:
committed by
GitHub
parent
cc18518e96
commit
a6cbf3146a
@@ -5,40 +5,74 @@
|
|||||||
*
|
*
|
||||||
* Change Logs:
|
* Change Logs:
|
||||||
* Date Author Notes
|
* Date Author Notes
|
||||||
* 2021-10-18 Meco Man The first version
|
* 2021-10-18 Meco Man the first version
|
||||||
|
* 2022-05-10 Meco Man improve rt-thread initialization process
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __RTTHREAD__
|
#ifdef __RTTHREAD__
|
||||||
|
|
||||||
|
#include <lvgl.h>
|
||||||
#include <rtthread.h>
|
#include <rtthread.h>
|
||||||
|
|
||||||
#define DBG_TAG "LVGL"
|
#define DBG_TAG "LVGL"
|
||||||
#define DBG_LVL DBG_INFO
|
#define DBG_LVL DBG_INFO
|
||||||
#include <rtdbg.h>
|
#include <rtdbg.h>
|
||||||
|
|
||||||
#include <lvgl.h>
|
#ifndef LVGL_THREAD_STACK_SIZE
|
||||||
#include <lv_port_disp.h>
|
#define LVGL_THREAD_STACK_SIZE 4096
|
||||||
#include <lv_port_indev.h>
|
#endif /* LVGL_THREAD_STACK_SIZE */
|
||||||
|
|
||||||
|
#ifndef LVGL_THREAD_PRIO
|
||||||
|
#define LVGL_THREAD_PRIO (RT_THREAD_PRIORITY_MAX*2/3)
|
||||||
|
#endif /* LVGL_THREAD_PRIO */
|
||||||
|
|
||||||
|
extern void lv_port_disp_init(void);
|
||||||
|
extern void lv_port_indev_init(void);
|
||||||
|
extern void lv_user_gui_init(void);
|
||||||
|
|
||||||
|
static struct rt_thread lvgl_thread;
|
||||||
|
static rt_uint8_t lvgl_thread_stack[LVGL_THREAD_STACK_SIZE];
|
||||||
|
|
||||||
#if LV_USE_LOG
|
#if LV_USE_LOG
|
||||||
static void lv_rt_log(const char *buf)
|
static void lv_rt_log(const char *buf)
|
||||||
{
|
{
|
||||||
LOG_I(buf);
|
LOG_I(buf);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* LV_USE_LOG */
|
||||||
|
|
||||||
static int lv_port_init(void)
|
static void lvgl_thread_entry(void *parameter)
|
||||||
{
|
{
|
||||||
#if LV_USE_LOG
|
#if LV_USE_LOG
|
||||||
lv_log_register_print_cb(lv_rt_log);
|
lv_log_register_print_cb(lv_rt_log);
|
||||||
#endif
|
#endif /* LV_USE_LOG */
|
||||||
|
|
||||||
lv_init();
|
lv_init();
|
||||||
|
|
||||||
lv_port_disp_init();
|
lv_port_disp_init();
|
||||||
lv_port_indev_init();
|
lv_port_indev_init();
|
||||||
|
lv_user_gui_init();
|
||||||
|
|
||||||
|
/* handle the tasks of LVGL */
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
lv_task_handler();
|
||||||
|
rt_thread_mdelay(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int lvgl_thread_init(void)
|
||||||
|
{
|
||||||
|
rt_err_t err;
|
||||||
|
|
||||||
|
err = rt_thread_init(&lvgl_thread, "LVGL", lvgl_thread_entry, RT_NULL,
|
||||||
|
&lvgl_thread_stack[0], sizeof(lvgl_thread_stack), LVGL_THREAD_PRIO, 0);
|
||||||
|
if(err != RT_EOK)
|
||||||
|
{
|
||||||
|
LOG_E("Failed to create LVGL thread");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
rt_thread_startup(&lvgl_thread);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
INIT_COMPONENT_EXPORT(lv_port_init);
|
INIT_ENV_EXPORT(lvgl_thread_init);
|
||||||
|
|
||||||
#endif /*__RTTHREAD__*/
|
#endif /*__RTTHREAD__*/
|
||||||
|
|||||||
Reference in New Issue
Block a user