中断函数 然后,要在主循环里加入 lv_task_handler() 函数来唤起 LVGL 处理信息。LVGL 此时就会根据当前 tick 来计算和显示对应的图像。 配置完这些差不多就结束了,在主程序中引用 lvgl.h 和 lv_port_disp.h,开始时分别初始化二者,就可以开始写 GUI 代码了。主程序整体大概长这样: 主程序 ui_init() 是 Sq...
static portTASK_FUNCTION( lv_100ask_task_handler, pvParameters ) { TickType_t xLastWakeTime; const TickType_t xPeriod = pdMS_TO_TICKS( 5 ); // 使用当前时间初始化变量xLastWakeTime ,注意这和vTaskDelay()函数不同 xLastWakeTime = xTaskGetTickCount(); for(;;) { /* 调用系统延时函数,周期...
打开"lv_port_indev.c", 修改以下内容 3️⃣添加 触屏 的驱动头文件 同样在"lv_port_indev.c"文件下第14行,插入:#include “触摸屏的头文件” 4️⃣注释掉不需要的输入任务注册’ 在文件 “lv_port_indev.c” 中,你还需要对输入设备初始化函数lv_port_indev_init()进行调整,以便仅启用触摸屏输入...
Powerful and easy-to-use embedded GUI with many widgets, advanced visual effects (opacity, antialiasing, animations) and low memory requirements (16K RAM, 64K Flash). - lvgl/lv_rtt_port/rtt_lvgl_test.c at master · bigmagic123/lvgl
\n"); lv_init(); lv_port_disp_init(); /* esp_register_freertos_tick_hook(lv_tick_task); Create and start a periodic timer interrupt to call lv_tick_inc */ const esp_timer_create_args_t periodic_timer_args = { .callback = &lv_tick_task, .name = "periodic_gui"}; esp_timer...
lv_port_disp.c为lvgl的显示接口第一步就是把它和lv_port_disp.h头文件中的第一行if 0改为1,使...
1、针对app_port_disp.c文件,修改头文件包含 2、针对app_port_disp.h文件,修改如下部分 移植(重要部分) 现在开始最重要的部分了,这部分是lvgl移植的核心,需要和我们的驱动文件配合起来。具体方式见下面: 1、修改显示屏的长和宽 我所使用的显示屏是320X240的,所以做如下修改。
extern void lv_port_disp_init(void); lv_port_disp_init(); lv_example_btn_1(); while (1) { lv_task_handler(); } } 复制代码 现在基本完成了移植,然后准备编译下载看看效果。这里要特别注意:需要配置堆栈大小。我就是在这里遇到坑了。按上面移植之后一直显示不正常,而且程序跑飞了。
portYIELD() 实现的是任务切换,相当于 uC/OS-II中的 OS_TASK_SW()。 portNOP() 顾名思义就是对空操作定义了个宏。具体在FreeRTOS 代码中哪里用到了这个宏没注意过,但是想必是有地方用到了。 然后是有关临界区的处理代码: /* Critical section handling. */ ...
在lvgl/examples/porting文件夹中把所需要的文件里的开头的#if 0改成 #if 1。本次只使用到屏幕驱动,所以只需要将lv_port_disp_template.c和lv_port_disp_template.h改掉即可。 lv_port_disp_template为屏幕驱动。 lv_port_fs_template为文件系统驱动。