📘 LVGL 事件驱动 · 状态机
30章 · 从入门到实战
🎯 友好色系
30课
01
事件驱动模型概述
核心
什么是事件驱动 · 轮询 vs 中断 vs 事件驱动 · LVGL事件循环机制
02
LVGL事件基础
必备
lv_event_t结构体 · lv_obj_add_event_cb() · 回调函数签名
03
事件类型详解
核心
CLICKED, PRESSING, VALUE_CHANGED 等核心事件类型
04
事件冒泡机制
进阶
传递路径 · PREPROCESS vs POSTPROCESS · 阻止冒泡
05
事件数据获取
实用
lv_event_get_target / current_target / param 使用
06
自定义事件
进阶
lv_event_send · 用户事件ID · 参数传递技巧
07
事件优先级与顺序
机制
处理队列 · 多回调顺序 · 优先级设置方法
08
手势事件处理
交互
LV_EVENT_GESTURE · 方向检测 · 滑动与长按区分
09
按键与编码器事件
硬件
LV_EVENT_KEY / ENCODER · 物理按键映射
10
组事件管理
焦点
lv_group_t · 焦点切换 · 组内按键事件处理
11
状态机设计模式
理论
什么是状态机 · FSM基本概念 · 状态与转移数学表示
12
状态机在UI中的应用
实战
页面切换 · 登录流程 · 菜单导航状态机
13
简单状态机实现
编码
switch-case · 函数指针表 · 状态转移表实现
14
LVGL与状态机结合
核心
事件回调驱动状态转移 · 进入/退出动作 · 上下文管理
15
实战:多页面导航
项目
页面ID定义 · 切换动画 · 返回栈管理
16
实战:表单填写流程
项目
步骤条状态机 · 数据校验 · 进度保存与恢复
17
实战:设置菜单
项目
多级菜单展开/折叠 · 选中状态 · 修改与保存
18
实战:弹窗管理
项目
优先级队列 · 叠加与关闭 · 模态与非模态
19
实战:长按与双击检测
项目
定时器辅助状态机 · 长按阈值 · 双击间隔
20
实战:动画状态机
项目
动画开始/进行/结束 · 打断与衔接 · 缓动切换
21
状态机嵌套
架构
子状态机 · 父子通信 · 组合与复用
22
状态机调试技巧
工具
状态日志 · 转移图生成 · 可视化工具
23
性能优化
进阶
事件过滤 · 表驱动优化 · 内存管理策略
24
多任务环境状态机
RTOS
FreeRTOS任务 · 消息队列驱动 · 互斥锁保护
25
状态机代码生成
自动化
转移表自动生成 · YAML定义 · 模板引擎生成C
26
事件驱动架构设计
架构
发布-订阅模式 · 事件总线 · 解耦组件通信
27
状态机测试方法
质量
单元测试状态转移 · 覆盖率 · 边界条件
28
常见问题与避坑
经验
事件丢失 · 状态不一致 · 递归事件 · 内存泄漏
29
综合项目:智能家居面板
完结
需求分析 · 状态机设计 · 事件驱动 · 完整代码
30
课程总结与进阶
展望
核心概念回顾 · 学习资源 · RT-Thread+LVGL深度结合