[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-6033":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},6033,"lvgl","lvgl\u002Flvgl","Embedded graphics library to create beautiful UIs for any MCU, MPU and display type. ","https:\u002F\u002Flvgl.io",null,"C",23794,4207,315,82,0,10,69,283,55,45,"MIT License",false,"master",[25,26,27,28,29,30,31],"c","embedded","graphics","gui","mcu","microcontroller","tft","2026-06-12 02:01:15","\u003Cp align=\"right\">\n  \u003Cb>English\u003C\u002Fb> | \u003Ca href=\".\u002Fdocs\u002FREADME_zh.md\">中文\u003C\u002Fa> | \u003Ca href=\".\u002Fdocs\u002FREADME_pt_BR.md\">Português do Brasil\u003C\u002Fa> | \u003Ca href=\".\u002Fdocs\u002FREADME_jp.md\">日本語\u003C\u002Fa> | \u003Ca href=\".\u002Fdocs\u002FREADME_he.md\">עברית\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Flvgl.io\u002Fgithub-assets\u002Flogo-colored.png\" width=300px>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Light and Versatile Graphics Library\u003C\u002Fh1>\n\n\u003Cbr\u002F>\n\n\u003Cdiv align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Flvgl.io\u002Fgithub-assets\u002Fsmartwatch-demo.gif\">\n  &nbsp;\n  \u003Cimg border=\"1px\" src=\"https:\u002F\u002Flvgl.io\u002Fgithub-assets\u002Fwidgets-demo.gif\">\n\u003C\u002Fdiv>\n\n\u003Cbr\u002F>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Flvgl.io\" title=\"Homepage of LVGL\">Website\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fpro.lvgl.io\" title=\"LVGL Pro XML based UI Editor\">LVGL Pro Editor\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fdocs.lvgl.io\u002F\" title=\"Detailed documentation with 100+ examples\">Docs\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Fforum.lvgl.io\" title=\"Get help and help others\">Forum\u003C\u002Fa> |\n  \u003Ca href=\"https:\u002F\u002Flvgl.io\u002Fdemos\" title=\"Demos running in your browser\">Demos\u003C\u002Fa> |\n\u003Ca href=\"https:\u002F\u002Flvgl.io\u002Fservices\" title=\"Graphics design, UI implementation and consulting\">Services\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n### Table of Contents\n\u003Cp>\n  \u003Ca href=\"#ledger-overview\">Overview\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#-features\">Features\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#%EF%B8%8F-platform-support\">Platform Support\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#-lvgl-pro-editor\">LVGL Pro Editor\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#-commercial-services\">Commercial Services\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#%E2%80%8D-integrating-lvgl\">Integrating LVGL\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#-examples\">Examples\u003C\u002Fa> \u003Cbr\u002F>\n  \u003Ca href=\"#-contributing\">Contributing\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cbr\u002F>\n\n## 📒 Overview\n\n**LVGL** is a free and open-source UI library that enables you to create graphical user interfaces\nfor any MCUs and MPUs from any vendor on any platform.\n\n**Requirements**: LVGL has no external dependencies, which makes it easy to compile for any modern target,\nfrom small MCUs to multi-core Linux-based MPUs with 3D support. For a simple UI, you need only ~100kB RAM,\n~200–300kB flash, and a buffer size of 1\u002F10 of the screen for rendering.\n\n**To get started**, pick a ready-to-use VSCode, Eclipse, or any other project and try out LVGL\non your PC. The LVGL UI code is fully platform-independent, so you can use the same UI code\non embedded targets too.\n\n**LVGL Pro** is a complete toolkit to help you build, test, share, and ship UIs faster.\nIt comes with an XML Editor where you can quickly create and test reusable components,\nexport C code, or load the XMLs at runtime. Learn more here.\n\n## 💡 Features\n\n**Free and Portable**\n  - A fully portable C (C++ compatible) library with no external dependencies.\n  - Can be compiled for any MCU or MPU, with any (RT)OS. Make, CMake, and simple globbing are all supported.\n  - Supports monochrome, ePaper, OLED, or TFT displays, or even monitors. [Displays](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fmain-modules\u002Fdisplay\u002Findex.html)\n  - Distributed under the MIT license, so you can easily use it in commercial projects too.\n  - Needs only 32kB RAM and 128kB Flash, a frame buffer, and at least a 1\u002F10 screen-sized buffer for rendering.\n  - OS, external memory, and GPU are supported but not required.\n\n**Widgets, Styles, Layouts, and More**\n  - 30+ built-in [Widgets](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fwidgets\u002Findex.html): Button, Label, Slider, Chart, Keyboard, Meter, Arc, Table, and many more.\n  - Flexible [Style system](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fcommon-widget-features\u002Fstyles\u002Findex.html) with ~100 style properties to customize any part of the widgets in any state.\n  - [Flexbox](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fcommon-widget-features\u002Flayouts\u002Fflex.html) and [Grid](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fcommon-widget-features\u002Flayouts\u002Fgrid.html)-like layout engines to automatically size and position the widgets responsively.\n  - Text is rendered with UTF-8 encoding, supporting CJK, Thai, Hindi, Arabic, and Persian writing systems.\n  - [Data bindings](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fmain-modules\u002Fobserver\u002Findex.html) to easily connect the UI with the application.\n  - Rendering engine supports animations, anti-aliasing, opacity, smooth scrolling, shadows, image transformation, etc.\n  - [Powerful 3D rendering engine](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Flibs\u002Fgltf.html) to show [glTF models](https:\u002F\u002Fsketchfab.com\u002F) with OpenGL.\n  - Supports Mouse, Touchpad, Keypad, Keyboard, External buttons, Encoder [Input devices](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fmain-modules\u002Findev.html).\n  - [Multiple display](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fmain-modules\u002Fdisplay\u002Foverview.html#how-many-displays-can-lvgl-use) support.\n\n## 📦️ Platform Support\n\nLVGL has no external dependencies, so it can be easily compiled for any devices and it's  also available in many package managers and RTOSes:\n\n- [Arduino library](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fintegration\u002Fframework\u002Farduino.html)\n- [PlatformIO package](https:\u002F\u002Fregistry.platformio.org\u002Flibraries\u002Flvgl\u002Flvgl)\n- [Zephyr library](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fintegration\u002Fos\u002Fzephyr.html)\n- [ESP-IDF(ESP32) component](https:\u002F\u002Fcomponents.espressif.com\u002Fcomponents\u002Flvgl\u002Flvgl)\n- [NXP MCUXpresso component](https:\u002F\u002Fwww.nxp.com\u002Fdesign\u002Fsoftware\u002Fembedded-software\u002Flvgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY)\n- [NuttX library](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fintegration\u002Fos\u002Fnuttx.html)\n- [RT-Thread RTOS](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fintegration\u002Fos\u002Frt-thread.html)\n- CMSIS-Pack\n- [RIOT OS package](https:\u002F\u002Fdoc.riot-os.org\u002Fgroup__pkg__lvgl.html#details)\n\n## 🚀 LVGL Pro Editor\n\nLVGL Pro is a complete toolkit to build, test, share, and ship embedded UIs efficiently.\n\nIt consists of four tightly related tools:\n\n1. **XML Editor**: The heart of LVGL Pro. A desktop app to build components and screens in XML, manage data bindings, translations, animations, tests, and more. Learn more about the [XML Format](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fxml\u002Fxml\u002Findex.html) and the [Editor](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fxml\u002Feditor\u002Findex.html).\n2. **Online Viewer**: Run the Editor in your browser, open GitHub projects, and share easily without setting up a developer environment. Visit [https:\u002F\u002Fviewer.lvgl.io](https:\u002F\u002Fviewer.lvgl.io).\n3. **CLI Tool**: Generate C code and run tests in CI\u002FCD. See the details [here](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fxml\u002Ftools\u002Fcli.html).\n4. **Figma Plugin**: Sync and extract styles directly from Figma. See how it works [here](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fxml\u002Ftools\u002Ffigma.html).\n\nTogether, these tools let developers build UIs efficiently, test them reliably, and collaborate with team members and customers.\n\nLearn more at https:\u002F\u002Fpro.lvgl.io\n\n## 🤝 Commercial Services\n\nLVGL LLC provides several types of commercial services to help you with UI development. With 15+ years of experience in the user interface and graphics industry, we can help bring your UI to the next level.\n\n- **Graphics design**: Our in-house graphic designers are experts in creating beautiful modern designs that fit your product and the capabilities of your hardware.\n- **UI implementation**: We can implement your UI based on the design you or we have created. You can be sure that we will make the most of your hardware and LVGL. If a feature or widget is missing from LVGL, don't worry, we will implement it for you.\n- **Consulting and Support**: We also offer consulting to help you avoid costly and time-consuming mistakes during UI development.\n- **Board certification**: For companies offering development boards or production-ready kits, we provide board certification to show how the board can run LVGL.\n\nCheck out our [Demos](https:\u002F\u002Flvgl.io\u002Fdemos) as references. For more information, take a look at the [Services page](https:\u002F\u002Flvgl.io\u002Fservices).\n\n[Contact us](https:\u002F\u002Flvgl.io\u002F#contact) and tell us how we can help.\n\n## 🧑‍💻 Integrating LVGL\n\nIntegrating LVGL is very simple. Just drop it into any project and compile it as you would compile other files.\nTo configure LVGL, copy `lv_conf_template.h` as `lv_conf.h`, enable the first `#if 0`, and adjust the configs as needed.\n(The default config is usually fine.) If available, LVGL can also be used with Kconfig.\n\nOnce in the project, you can initialize LVGL and create display and input devices as follows:\n\n```c\n#include \"lvgl\u002Flvgl.h\" \u002F*Define LV_LVGL_H_INCLUDE_SIMPLE to include as \"lvgl.h\"*\u002F\n\n#define TFT_HOR_RES 320\n#define TFT_VER_RES 240\n\nstatic uint32_t my_tick_cb(void)\n{\n    return my_get_millisec();\n}\n\nstatic void my_flush_cb(lv_display_t * disp, const lv_area_t * area, uint8_t * px_map)\n{\n    \u002F*Write px_map to the area->x1, area->x2, area->y1, area->y2 area of the\n     *frame buffer or external display controller. *\u002F\n\n    \u002F* signal LVGL that we're done *\u002F\n    lv_display_flush_ready(disp);\n}\n\nstatic void my_touch_read_cb(lv_indev_t * indev, lv_indev_data_t * data)\n{\n   if(my_touch_is_pressed()) {\n       data->point.x = touchpad_x;\n       data->point.y = touchpad_y;\n       data->state = LV_INDEV_STATE_PRESSED;\n   } else {\n       data->state = LV_INDEV_STATE_RELEASED;\n   }\n}\n\nvoid main(void)\n{\n    my_hardware_init();\n\n    \u002F*Initialize LVGL*\u002F\n    lv_init();\n\n    \u002F*Set millisecond-based tick source for LVGL so that it can track time.*\u002F\n    lv_tick_set_cb(my_tick_cb);\n\n    \u002F*Create a display where screens and widgets can be added*\u002F\n    lv_display_t * display = lv_display_create(TFT_HOR_RES, TFT_VER_RES);\n\n    \u002F*Add rendering buffers to the screen.\n     *Here adding a smaller partial buffer assuming 16-bit (RGB565 color format)*\u002F\n    static uint8_t buf[TFT_HOR_RES * TFT_VER_RES \u002F 10 * 2]; \u002F* x2 because of 16-bit color depth *\u002F\n    lv_display_set_buffers(display, buf, NULL, sizeof(buf), LV_DISPLAY_RENDER_MODE_PARTIAL);\n\n    \u002F*Add a callback that can flush the content from `buf` when it has been rendered*\u002F\n    lv_display_set_flush_cb(display, my_flush_cb);\n\n    \u002F*Create an input device for touch handling*\u002F\n    lv_indev_t * indev = lv_indev_create();\n    lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);\n    lv_indev_set_read_cb(indev, my_touch_read_cb);\n\n    \u002F*The drivers are in place; now we can create the UI*\u002F\n    lv_obj_t * label = lv_label_create(lv_screen_active());\n    lv_label_set_text(label, \"Hello world\");\n    lv_obj_center(label);\n\n    \u002F*Execute the LVGL-related tasks in a loop*\u002F\n    while(1) {\n        lv_timer_handler();\n        my_sleep_ms(5);         \u002F*Wait a little to let the system breathe*\u002F\n    }\n}\n```\n\n## 🤖 Examples\n\nYou can check out more than 100 examples at https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fexamples.html\n\nThe Online Viewer also contains tutorials to easily learn XML: https:\u002F\u002Fviewer.lvgl.io\u002F\n\n\n### Hello World Button with an Event\n\n\u003Cimg width=\"311\" height=\"232\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5948b485-e3f7-4a63-bb21-984381417c4a\" \u002F>\n\n\u003Cdetails>\n  \u003Csummary>C code\u003C\u002Fsummary>\n\n  ```c\nstatic void button_clicked_cb(lv_event_t * e)\n{\n\tprintf(\"Clicked\\n\");\n}\n\n[...]\n\n  lv_obj_t * button = lv_button_create(lv_screen_active());\n  lv_obj_center(button);\n  lv_obj_add_event_cb(button, button_clicked_cb, LV_EVENT_CLICKED, NULL);\n\n  lv_obj_t * label = lv_label_create(button);\n  lv_label_set_text(label, \"Hello from LVGL!\");\n```\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n  \u003Csummary>In XML with LVGL Pro\u003C\u002Fsummary>\n\n```xml\n\u003Cscreen>\n\t\u003Cview>\n\t\t\u003Clv_button align=\"center\">\n\t\t\t\u003Cevent_cb callback=\"button_clicked_cb\" \u002F>\n\t\t\t\u003Clv_label text=\"Hello from LVGL!\" \u002F>\n\t\t\u003C\u002Flv_button>\n\t\u003C\u002Fview>\n\u003C\u002Fscreen>\n```\n\n\u003C\u002Fdetails>\n\n### Styled Slider with Data-binding\n\n\u003Cimg width=\"314\" height=\"233\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F268db1a0-946c-42e2-aee4-9550bdf5f4f9\" \u002F>\n\n\u003Cdetails>\n  \u003Csummary>C code\u003C\u002Fsummary>\n\n```c\nstatic void my_observer_cb(lv_observer_t * observer, lv_subject_t * subject)\n{\n\tprintf(\"Slider value: %d\\n\", lv_subject_get_int(subject));\n}\n\n[...]\n\nstatic lv_subject_t subject_value;\nlv_subject_init_int(&subject_value, 35);\nlv_subject_add_observer(&subject_value, my_observer_cb, NULL);\n\nlv_style_t style_base;\nlv_style_init(&style_base);\nlv_style_set_bg_color(&style_base, lv_color_hex(0xff8800));\nlv_style_set_bg_opa(&style_base, 255);\nlv_style_set_radius(&style_base, 4);\n\nlv_obj_t * slider = lv_slider_create(lv_screen_active());\nlv_obj_center(slider);\nlv_obj_set_size(slider, lv_pct(80), 16);\nlv_obj_add_style(slider, &style_base, LV_PART_INDICATOR);\nlv_obj_add_style(slider, &style_base, LV_PART_KNOB);\nlv_obj_add_style(slider, &style_base, 0);\nlv_obj_set_style_bg_opa(slider, LV_OPA_50, 0);\nlv_obj_set_style_border_width(slider, 3, LV_PART_KNOB);\nlv_obj_set_style_border_color(slider, lv_color_hex3(0xfff), LV_PART_KNOB);\nlv_slider_bind_value(slider, &subject_value);\n\nlv_obj_t * label = lv_label_create(lv_screen_active());\nlv_obj_align(label, LV_ALIGN_CENTER, 0, -30);\nlv_label_bind_text(label, &subject_value, \"Temperature: %d °C\");\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n  \u003Csummary>In XML with LVGL Pro\u003C\u002Fsummary>\n\n```xml\n\u003Cscreen>\n\t\u003Cstyles>\n\t\t\u003Cstyle name=\"style_base\" bg_opa=\"100%\" bg_color=\"0xff8800\" radius=\"4\" \u002F>\n\t\t\u003Cstyle name=\"style_border\" border_color=\"0xfff\" border_width=\"3\" \u002F>\n\t\u003C\u002Fstyles>\n\n\t\u003Cview>\n\t\t\u003Clv_label bind_text=\"value\" bind_text-fmt=\"Temperature: %d °C\" align=\"center\" y=\"-30\" \u002F>\n\t\t\u003Clv_slider align=\"center\" bind_value=\"value\" style_bg_opa=\"30%\">\n\t\t\t\u003Cstyle name=\"style_base\" \u002F>\n\t\t\t\u003Cstyle name=\"style_base\" selector=\"knob\" \u002F>\n\t\t\t\u003Cstyle name=\"style_base\" selector=\"indicator\" \u002F>\n\t\t\t\u003Cstyle name=\"style_border\" selector=\"knob\" \u002F>\n\t\t\u003C\u002Flv_slider>\n\t\u003C\u002Fview>\n\u003C\u002Fscreen>\n```\n\n\u003C\u002Fdetails>\n\n### Checkboxes in a Layout\n\n\u003Cimg width=\"311\" height=\"231\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fba9af647-2ea1-4bc8-b53d-c7b43ce24b6e\" \u002F>\n\n\u003Cdetails>\n  \u003Csummary>C code\u003C\u002Fsummary>\n\n  ```c\n\u002F*Create a new screen and load it*\u002F\nlv_obj_t * scr = lv_obj_create(NULL);\nlv_screen_load(scr);\n\n\u002F*Set a column layout*\u002F\nlv_obj_set_flex_flow(scr, LV_FLEX_FLOW_COLUMN);\nlv_obj_set_flex_align(scr, LV_FLEX_ALIGN_SPACE_EVENLY, \u002F*Vertical alignment*\u002F\n\t\t\t\t\t\t   LV_FLEX_ALIGN_START,\t       \u002F*Horizontal alignment in the track*\u002F\n\t\t\t\t\t\t   LV_FLEX_ALIGN_CENTER);      \u002F*Horizontal alignment of the track*\u002F\n\n\u002F*Create 5 checkboxes*\u002F\nconst char * texts[5] = {\"Input 1\", \"Input 2\", \"Input 3\", \"Output 1\", \"Output 2\"};\nfor(int i = 0; i \u003C 5; i++) {\n\tlv_obj_t * cb = lv_checkbox_create(scr);\n\tlv_checkbox_set_text(cb, texts[i]);\n}\n\n\u002F*Change some states*\u002F\nlv_obj_add_state(lv_obj_get_child(scr, 1), LV_STATE_CHECKED);\nlv_obj_add_state(lv_obj_get_child(scr, 3), LV_STATE_DISABLED);\n```\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n  \u003Csummary>In XML with LVGL Pro\u003C\u002Fsummary>\n\n```xml\n\u003Cscreen>\n\t\u003Cview\n\t\tflex_flow=\"column\"\n\t\tstyle_flex_main_place=\"space_evenly\"\n\t\tstyle_flex_cross_place=\"start\"\n\t\tstyle_flex_track_place=\"center\"\n\t>\n\t\t\u003Clv_checkbox text=\"Input 1\"\u002F>\n\t\t\u003Clv_checkbox text=\"Input 2\"\u002F>\n\t\t\u003Clv_checkbox text=\"Input 3\" checked=\"true\"\u002F>\n\t\t\u003Clv_checkbox text=\"Output 1\"\u002F>\n\t\t\u003Clv_checkbox text=\"Output 2\" disabled=\"true\"\u002F>\n   \u003C\u002Fview>\n\u003C\u002Fscreen>\n```\n\n\u003C\u002Fdetails>\n\n\n## 🌟 Contributing\n\nLVGL is an open project, and contributions are very welcome. There are many ways to contribute, from simply speaking about your project, writing examples, improving the documentation, fixing bugs, or even hosting your own project under the LVGL organization.\n\nFor a detailed description of contribution opportunities, visit the [Contributing](https:\u002F\u002Fdocs.lvgl.io\u002Fmaster\u002Fcontributing\u002Findex.html)\nsection of the documentation.\n\nMore than 600 people have already left their fingerprint on LVGL. Be one of them! See you here! 🙂\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Flvgl\u002Flvgl\u002Fgraphs\u002Fcontributors\"> \u003Cimg src=\"https:\u002F\u002Fcontrib.rocks\u002Fimage?repo=lvgl\u002Flvgl&max=48\" \u002F> \u003C\u002Fa>\n\n... and many more.\n","LVGL 是一个嵌入式图形库，用于为各种MCU、MPU和显示类型创建美观的用户界面。其核心功能包括完全可移植的C语言库（兼容C++），无需外部依赖，支持从单色屏到TFT等多种显示技术，并且可以在任何现代目标上编译，从小型MCU到多核Linux系统的MPU。LVGL仅需约100kB RAM和200-300kB闪存即可运行简单的UI。它适用于需要在资源受限环境中构建高质量图形界面的应用场景，如智能家居设备、工业控制面板或可穿戴设备等。MIT许可证使得该库非常适合商业项目使用。",2,"2026-06-11 03:05:24","top_language"]