- 博客(609)
- 资源 (4)
- 收藏
- 关注
原创 【无标题】
lv_msgbox 是 LVGL(Light and Versatile Graphics Library)中的一个标准弹出对话框控件,用于显示提示信息、确认对话或错误警告,并提供按钮供用户响应。它支持显示标题和消息内容,允许自定义按钮文字和位置,并可通过事件回调处理用户操作。lv_msgbox 还支持模态窗口效果、自动关闭功能以及样式的自定义。开发者可以通过简单的 API 创建消息框,并根据需求调整其外观和行为。典型的使用场景包括信息提示、选项确认和错误提示等。
2025-05-17 09:53:19
25
原创 LVGL(lv_roller滚轮选择器)
lv_roller 是 LVGL 中的滚动选择控件,适用于从一组选项中选择一个条目的场景,如时间、日期或语言选择。通过 lv_roller_create 创建对象,并使用 lv_roller_set_options 设置选项,选项以 \n 分隔。滚动模式分为 NORMAL(有限滚动)和 INFINITE(无限循环),后者更适合时间或日期选择。可通过 lv_roller_set_visible_row_count 设置可见行数,建议使用奇数值以使中间选项居中。事件处理通过 LV_EVENT_VALUE_CHA
2025-05-17 09:44:14
415
原创 LVGL(lv_dropdown下拉列表控件)
lv_dropdown 是 LVGL 库中的一个下拉菜单组件,广泛用于嵌入式 GUI 开发,适用于设置选择、语言选择等场景。它结合了按钮、文本和列表的功能,用户点击后会弹出选项列表供选择。通过 lv_dropdown_create 可以创建下拉菜单,并使用 lv_dropdown_set_options 设置选项。常用函数包括获取选中项、设置选中项、获取选中文本等。此外,可以设置下拉框的最大高度、弹出方向以及提示文本。lv_dropdown 还支持事件回调,用户选择选项时会触发事件。高级功能包括动态设置选项
2025-05-17 09:34:13
96
原创 ESP32C3连接wifi
本文详细介绍了如何使用ESP32-C3模块在STA模式下连接Wi-Fi。首先,文章解释了连接Wi-Fi的基本流程,包括初始化NVS存储、网络接口和事件循环,设置Wi-Fi参数,注册事件处理函数,并启动Wi-Fi连接。接着,提供了完整的代码示例,并逐行注释了关键步骤,如初始化Wi-Fi驱动、配置SSID和密码、设置STA模式、启动Wi-Fi等。代码中还包含了一个事件处理函数,用于处理Wi-Fi连接、断开和获取IP地址等事件。最后,文章总结了代码的简洁性和适用性,特别适合初学者快速验证功能。通过本文,读者可以掌
2025-05-13 21:23:22
464
原创 LVGL(lv_led LED灯控件)
lv_led 是 LVGL 中用于模拟 LED 灯效果的控件,常用于显示设备状态或提供视觉反馈。它支持亮灭状态、颜色和亮度的设置,适用于开关状态指示、警告提示等场景。通过 lv_led_create 创建控件后,可以使用 lv_led_on 和 lv_led_off 控制其开关状态,lv_led_set_color 设置颜色,lv_led_set_brightness 调整亮度。示例代码展示了如何创建并配置 LED 控件,使其居中显示并设置亮度为 200。lv_led 控件在设备状态指示和动态效果(如呼吸灯
2025-05-12 21:20:35
914
原创 LVGL(线条控件lv_line)
lv_line 是 LVGL(Light and Versatile Graphics Library)中用于绘制直线的对象,属于 lv_obj_t 类型。通过设置起点和终点,lv_line 可以绘制直线,并支持调整颜色、宽度、透明度等属性。主要函数包括 lv_line_create 用于创建直线对象,lv_line_set_points 用于设置直线的坐标点,以及 lv_obj_set_style_local_line_color 和 lv_obj_set_style_local_line_width 用
2025-05-12 21:13:52
403
原创 LVGL(lv_checkbox复选框按键)
lv_checkbox 是 LVGL 中的复选框控件,用于表示“开/关”或“已选/未选”状态,适用于设置选项、表单等场景。它有三种状态:已勾选、未勾选和禁用状态。通过 lv_checkbox_create 可以创建复选框,并设置文本和勾选状态。事件回调可用于监听状态变化。样式可以自定义,如颜色、字体等。典型应用包括用户协议、设置选项和批量选择。需要注意的是,lv_checkbox 仅支持简单文本和方框,不支持复杂内容或单独修改图标。
2025-05-12 20:55:10
650
原创 LVGL(lv_switch开关)
lv_switch 是 LVGL 中的开关组件,用于表示二值状态(开/关),适用于设置项或设备控制面板。它支持动画、样式自定义、状态读取/设置及事件监听。基本用法包括创建开关、设置/读取状态、添加事件回调等。通过 lv_obj_set_style_*() 可以自定义开关的样式,如背景颜色、滑块样式等。lv_switch 常用于设置页面(如 Wi-Fi 开关)或 IoT 控制面板(如灯光开关)。常用 API 包括创建开关、设置状态、读取状态、添加事件回调等。
2025-05-12 20:53:06
447
原创 LVGL(lv_list列表控件)
lv_list 是 LVGL(Light and Versatile Graphics Library)中的一个 UI 组件,用于创建可滚动的项目列表,类似于设置菜单或选项列表。它支持图标、文字和点击事件,非常适合嵌入式 GUI 项目。lv_list 是一个容器,可以容纳多个子项(按钮),每个子项可以是带图标的按钮或仅文字的按钮。常用 API 包括创建列表对象、添加按钮、设置点击事件回调、获取按钮文字和设置样式。列表默认垂直滚动,使用 flex 布局自动管理子项排列。LVGL v8 与 v7 在事件回调、布
2025-05-12 20:37:53
1084
原创 LVGL简易计算器实战
这个项目是一个基于LVGL(Light and Versatile Graphics Library)的简单计算器,支持基本四则运算(含括号)的表达式求值。项目通过界面实现用户输入、清除和计算结果显示功能。文件结构包括主函数入口(main.c)、界面实现(ui.c)、界面头文件(ui.h)、表达式求值模块(eval.c)和求值函数声明(eval.h)。表达式求值模块使用数字栈和运算符栈来处理表达式,并通过优先级规则进行计算。界面部分通过LVGL库创建输入框和按钮矩阵,并处理按钮点击事件,调用表达式求值函数进
2025-05-11 20:48:11
399
原创 LVGL(lv_btnmatrix矩阵按钮)
lv_btnmatrix 是 LVGL 库中的一个控件,用于在网格中布局多个按钮,常见于键盘、控制面板等场景。其基本用法包括创建按钮矩阵、设置按钮文字、配置按钮行为(如隐藏、禁用、可切换等)以及响应点击事件。通过 lv_btnmatrix_set_map 可以定义按钮的布局,lv_btnmatrix_set_ctrl_map 则用于控制按钮的行为。此外,可以通过事件处理器捕获按钮点击,并自定义样式以美化控件。典型应用如数字键盘,开发者可以灵活调整按钮属性,如不可点击、默认选中等。总结来说,lv_btnmat
2025-05-11 20:29:24
500
原创 LVGL环形加载器
lv_spinner 是 LVGL(Light and Versatile Graphics Library)中的一个环形动画控件,用于显示加载或等待状态,常见于网络请求、初始化等场景。它基于 lv_arc 控件,通过动态旋转和样式设置实现持续旋转的加载动画。创建 lv_spinner 时,可以指定父对象、动画周期和弧长,并通过 lv_obj_set_style_*() 函数定制样式,如弧线颜色、宽度和背景透明度。lv_spinner 是自动组件,无需手动编写动画回调,适合与状态栏或弹窗配合使用,提示用户“
2025-05-11 14:52:01
454
原创 LVGL 圆弧控件 lv_arc 全面讲解:圆环进度、旋钮调节全靠它!
LVGL 中的 lv_arc 控件是一个用于绘制圆形弧线的强大工具,适用于创建圆形进度条、仪表盘刻度或旋钮控制器。它支持设置角度范围、当前值、旋转角度,并允许自定义样式(如颜色、宽度、透明度等)。lv_arc 还支持交互功能,用户可以通过拖动旋钮来改变数值,并可以监听事件以响应数值变化。通过 lv_arc_set_mode() 方法,可以设置不同的旋转模式,如正常、反向或对称模式。示例展示了如何使用 lv_arc 创建一个音量旋钮,并提供了常见功能的总结,包括创建、设置范围、值、角度、旋转、启用拖动、样式控
2025-05-11 14:19:36
291
原创 用 LVGL 打造苹果风格音量滑块:圆润无球,极简优雅
本文详细介绍了如何使用 LVGL 框架创建一个仿 Apple 风格的音量滑块控件。通过逐行解析代码,展示了如何设置滑块的尺寸、默认值、隐藏 knob(小圆球),并自定义背景条和填充条的样式,最终实现一个简洁、现代且功能完整的滑块控件。该控件适用于嵌入式设备的触摸屏应用,如音量调节、亮度控制等。文章还提供了样式拓展建议和下一步优化方向,帮助开发者进一步定制和增强控件功能。
2025-05-11 14:15:20
820
原创 LVGL(lv_slider滑动条)
lv_slider 是 LVGL 中的滑块控件,用于音量、亮度等调节场景。它是 lv_bar 的子类,支持拖动滑块改变数值,并可设置为单向或区间进度模式。创建滑块时,可通过 lv_slider_create() 生成,并设置范围和初始值。用户拖动滑块时,可通过监听 LV_EVENT_VALUE_CHANGED 事件获取当前值。lv_slider 的样式可分别设置背景槽、填充区域和滑块按钮。此外,滑块支持横向和纵向使用,还可启用双滑块模式进行范围选择。通过 API 可以轻松实现滑块的创建、范围设置、值获取及样
2025-05-11 12:41:35
296
原创 LVGL(lv_btn按键类)
lv_btn 是 LVGL(Light and Versatile Graphics Library)中用于创建按钮的核心控件,继承自 lv_obj,具备基本的对象特性并增加了交互功能,如点击、按下和释放等事件响应。按钮可以作为容器,容纳标签、图标等元素。创建按钮的基本流程包括在当前屏幕上生成按钮并居中显示,随后可添加标签或图标。按钮的事件响应通过注册回调函数实现,支持处理按下、释放、点击和长按等事件。按钮的外观可以通过样式系统自定义,包括颜色、边框、圆角等,并支持根据状态(如按下状态)改变样式。在 LVG
2025-05-11 10:17:20
359
原创 LVGL(lv_label实战)
本文介绍了两个基于LVGL的示例控件案例。第一个案例展示了如何实现实时温度/电压显示功能,通过手动格式化浮点数并每秒更新数据,避免嵌入式环境中printf("%f")不支持的问题。第二个案例则演示了如何创建一个带图标和居中滚动文本的英文通知栏,支持自定义背景色、高度和位置,并可通过lv_anim实现更复杂的动画效果。两个案例均提供了详细的代码示例,便于开发者快速上手和扩展。
2025-05-11 09:56:40
233
原创 LVGL(lv_label标签)
lv_label 是 LVGL 中用于显示文本的基础控件,支持静态文本、动态数据、滚动文本等多种功能。通过 lv_label_create() 创建标签,并使用 lv_label_set_text() 设置文本内容。标签支持自动换行、文本对齐、滚动显示等模式,可通过 lv_label_set_long_mode() 进行配置。此外,还可以通过样式设置字体、颜色、背景等属性。lv_label 还支持 Unicode 字符和内置符号字体,适用于嵌入式图形界面开发。常见问题如文本显示不全、滚动无效等,可通过调整宽
2025-05-11 09:46:20
773
原创 LVGL定时器
LVGL 定时器是一种轻量级机制,用于周期性或一次性执行回调函数,适用于轮询状态、动画驱动、定时任务等场景。定时器的核心概念基于“滴答时间”,包含回调函数、间隔时间、是否周期执行等信息。创建定时器的方式包括周期性定时器和一次性定时器,前者通过 lv_timer_create 实现,后者可在回调中删除自身。常用的 API 包括定时器的创建、删除、暂停、恢复、重置等操作。定时器支持携带用户自定义数据,便于传递上下文。定时器的调度依赖于 lv_timer_handler() 函数,需在主循环中持续调用。使用时需注
2025-05-11 09:32:26
231
原创 LVGL中的事件
LVGL(Light and Versatile Graphics Library)的事件系统是控件间交互的核心机制,允许开发者响应按钮点击、滑动、值变化、焦点获取等用户操作。事件(lv_event_t)是控件生命周期或用户操作引发的动作通知,开发者通过注册回调函数处理这些事件。事件回调的注册使用lv_obj_add_event_cb()函数,参数包括监听对象、回调函数、事件类型和用户自定义数据。LVGL的事件类型分为输入类、组件状态类、生命周期类和滚动与拖动类,开发者可以在回调函数中通过lv_event_
2025-05-11 09:06:11
803
原创 LVGL样式的状态和部分
LVGL(Light and Versatile Graphics Library)的样式系统是其控件外观控制的核心机制,通过“状态”和“部分”两个维度实现精确的样式管理。状态(state)反映控件的动态交互情况,如默认、选中、禁用等,支持按位组合;部分(part)则指控件的不同组成部分,如主区域、指示器、滑块等,每个部分可独立设置样式。开发者可通过创建样式并将其应用于特定状态和部分,实现控件外观的动态变化。样式支持叠加,后添加的样式优先级更高,且可通过代码动态改变控件状态。LVGL的样式系统灵活且强大,为
2025-05-11 09:00:32
250
原创 LVGL对象的盒子模型和样式
LVGL(Light and Versatile Graphics Library)中的盒子模型和样式系统是构建用户界面的核心机制。盒子模型类似于Web/CSS的布局思想,由Content、Padding、Border和Margin组成,控制对象与周围及自身内容的布局关系。开发者可以通过设置这些区域来调整对象的结构和边距。 样式系统则通过lv_style_t结构体实现,允许开发者控制对象的颜色、大小、边框、字体等视觉属性。样式可以绑定到对象的不同部分(如主区域、指示器等),并支持多个样式的叠加,优先级为本地
2025-05-10 20:36:21
363
原创 LVGL对象的大小
在 LVGL 中,对象的大小是界面布局的基础,直接影响 UI 效果。每个 lv_obj_t 对象都有宽度和高度,可以通过 lv_obj_set_size() 函数设置。大小单位为像素,通常使用整数,不支持百分比。对象大小可以通过固定值、内容自适应或相对父对象大小来控制。固定大小通过 lv_obj_set_size() 设置,内容自适应则使用 LV_SIZE_CONTENT 让对象大小随内容变化。布局系统允许子对象在父对象内自动伸缩。实际视觉大小还受内边距、边框、圆角剪裁和滚动条等因素影响。调试时可以使用半透
2025-05-10 10:11:38
700
原创 LVGL的三层屏幕结构
LVGL(Light and Versatile Graphics Library)通过三层屏幕架构增强GUI的灵活性和分层显示能力。这三层分别是: Top Layer(顶层):用于显示始终在最前面的元素,如弹窗、消息提示框等,不受屏幕切换影响。 System Layer(系统层):用于LVGL系统自身使用的图层,如输入法弹出窗口、鼠标光标等,也不随屏幕切换消失。 Active Screen(当前屏幕层):用于正常显示UI的主界面,屏幕切换时会被替换。 通过代码示例,展示了如何在不同层级创建对象,并直观地观
2025-05-10 09:41:17
1012
原创 LVGL对象(Objects)
LVGL(Light and Versatile Graphics Library)中的对象(lv_obj_t)是构建用户界面的基本单元,几乎所有控件(如按钮、标签、滑块等)都从该基类派生。对象提供了样式、坐标、子对象容器、事件处理等核心功能。通过父子关系,对象形成树状结构,支持自动布局和事件冒泡。创建对象时需指定父对象,销毁时则使用 lv_obj_del()。样式系统允许自定义外观,事件机制则支持响应用户交互。LVGL通过“伪面向对象”的方式,结合宏和函数接口,实现了灵活且高效的UI开发。
2025-05-10 09:11:26
1213
原创 LVGL的裁剪和配置
LVGL(Light and Versatile Graphics Library)是一个开源的嵌入式图形库,适用于资源受限的嵌入式系统。其核心特点是通过配置文件 lv_conf.h 实现高度可裁剪性与定制性。用户可以通过宏开关裁剪不需要的模块和功能,如控件、动画、字体、图像解码器等,以减小代码体积并提升性能。配置文件 lv_conf.h 允许用户根据需求调整屏幕分辨率、颜色深度、缓冲区大小等参数,并启用或禁用特定功能。裁剪流程包括复制模板文件、修改项目路径、按需调整宏开关并重新编译。LVGL 的灵活配置使
2025-05-10 08:36:47
779
原创 LVGL的核心:lv_timer_handler
LVGL 的运行核心机制围绕**定时器轮询(Timer Loop)和任务处理器(Task Handler)**展开。通过在主循环中周期性调用 lv_task_handler(),LVGL 驱动系统更新,执行任务如动画、事件处理和屏幕刷新等。lv_task_handler() 内部调用 lv_timer_handler(),后者是 LVGL 的调度中心,负责遍历并执行以 lv_timer_t 为单位组织的任务链表。每个任务都有特定的执行周期,调度器会计算下一次任务的触发时间,并优化调用频率。此外,LVGL 还
2025-05-09 21:45:45
609
原创 一文掌握 LVGL 9 的源码目录结构
LVGL v9 是一款轻量级开源图形库,广泛应用于嵌入式 GUI 开发。其源码目录结构清晰,主要包含以下几个关键目录: src/:核心源码目录,涵盖控件、绘图系统、事件系统等,是开发者使用和定制的重点。 examples/:提供模块化的功能示例,帮助开发者快速掌握 API 使用。 demos/:展示综合应用演示,适合观察组件组合和多页应用构建。 env_support/:提供平台适配支持,帮助移植 LVGL 到不同操作系统或环境。 docs/:包含官方文档的源文件,通常通过官方文档站点访问。 scripts
2025-05-09 21:21:41
1300
原创 LVGL9保姆级教程(源码获取)
本文详细介绍了如何获取 LVGL 9.1.0 源码并搭建 Code::Blocks 工程环境。首先,通过 LVGL 官方 GitHub 仓库下载源码,选择所需版本并解压。接着,从 GitHub 获取适用于 Windows 的 Code::Blocks 示例工程,通过 README 引导或手动下载分支和源码包的方式完成工程框架的获取。最后,将 LVGL 源码拷贝到工程目录下,即可搭建完整的开发环境。文章还提供了后续学习建议,如配置 lv_conf.h、理解模块结构、运行官方 Demo 等,帮助开发者更好地掌握
2025-05-09 21:15:51
717
原创 FTP客户端实现(文件传输)
功能是否支持控制连接建立✅用户登录认证✅被动模式数据传输✅自动创建多级目录✅上传任意路径文件✅退出与资源释放✅1024// 内部函数声明// 创建客户端if (!return -1;0 : -1;return 0;if (!// 处理 remote_file:判断是否是目录// 提取文件名} else {// 提取目录路径并创建// 忽略失败// PASV 模式return -1。
2025-04-20 19:29:58
1001
原创 FTP协议命令和响应码
是一个基于客户端-服务器架构的应用层协议,主要用于在网络中上传、下载文件。控制连接:用于传输命令和响应(端口号默认 21)数据连接:用于传输数据,如文件和目录列表要素建议命令发送加上\r\n结尾,例如数据读取使用recv后需检查返回码,并处理多行响应编码FTP 协议是基于纯文本的,使用 ASCII 传输命令和响应模式选择推荐使用 PASV 模式进行数据传输(更稳定)
2025-04-20 19:26:05
902
原创 JSON-RPC远程控制
是一种基于 JSON 的远程过程调用协议,它允许你通过网络调用远程系统中的函数/方法。轻量级:只使用 JSON,无需 XML 或复杂的结构。与平台无关:任何支持 JSON 的语言都可实现。双向通信:既可请求调用,也可异步响应。
2025-04-20 09:02:07
768
原创 C语言调用C++函数
i < 5;i++) {std::cout << "线程消息: " << message << " 计数: " << i << std::endl;// 告诉编译器这个函数用 C 的方式命名,方便 C 调用t.detach();std::cout << "C++线程已创建并分离" << std::endl;│ C语言代码 ││ main.c ││ include "thread_helper.h" → 声明函数 create_cpp_thread│▼。
2025-04-19 07:53:03
53
原创 ffmpeg编解码器相关函数
(或// 1. 找到解码器// 2. 分配上下文// 3. 从 AVCodecParameters 拷贝参数// 4. 打开解码器// 5. 循环解码// 处理解码后的 frame,比如显示或保存// 6. 清理资源在 FFmpeg 中,处理音视频数据的各个组件是基于不同的结构体来管理的。这里我会简要讲解一下与音视频解复用、编码解码相关的结构体,重点关注AVStreamAVCodecAVPacket和AVFrame等。
2025-04-09 21:18:16
799
原创 ffmpeg函数简介(封装格式相关)
读取一个包(packet),即从文件或流中读取一帧音视频数据。创建的 AVFormatContext,那么用它来释放。从媒体文件中读取流信息,比如视频流、音频流、字幕流等。,包含了解码器、流信息、文件路径、数据缓冲等信息。几乎所有操作媒体文件的函数都围绕这个结构体展开。获取流信息,比如帧率、分辨率、码率、时长等。这个函数更灵活,允许设置查找时间戳范围。但通常我们更常用的是。(即打开文件并准备读取媒体信息)。打开一个输入媒体文件,并填充。关闭输入文件并释放相关资源。,适合更复杂的跳转需求。
2025-04-09 21:05:36
1419
原创 ffmpeg基础知识入门
容器是一种媒体封装格式,用来将音频流、视频流、字幕流等打包在一个文件中。媒体流是指某一类连续的媒体数据,通常是视频流、音频流或字幕流。Frame(帧):解码后的数据单位(未压缩)视频帧是一张图片音频帧是一段 PCM 采样点Packet(包):压缩后的数据单位(经过编码器压缩后,准备写入容器的)Codec = COder + DECoder,即“编码器/解码器”。复用器(Muxer)把多条媒体流(音频、视频)打包进容器,形成一个完整的媒体文件或媒体流。解复用器(Demuxer)从容器中。
2025-04-05 18:50:53
753
原创 SDL中SDL_AudioSpec结构体参数
int freq;// 采样频率(Hz)// 采样点格式// 通道数// 静音值(用于填充缓冲)// 每次回调请求的采样数(缓冲区大小)// 已弃用// 缓冲区字节大小(自动计算)// 回调函数// 用户自定义数据(传入回调)
2025-04-05 18:30:28
1158
Cmake 3.27版本
2023-07-16
SG90舵机使用手册pdf
2023-06-13
STM32F407智能小车学习代码
2023-06-13
基于STM32智能小车
2022-12-17
智能指针的类型方法及使用方法
2023-03-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人