支线一 / 显示驱动与嵌入式 UI
从驱动屏幕,到用 LVGL 做完整界面
把一条像素通路,逐步扩展成能交互、能更新数据、能稳定运行的界面。七篇按同一个小界面递进,不要求一次记住全部 API。
从哪里开始?完成主线 GPIO、UART 与 SPI 后,可以先读第 1~5 篇。数据生命周期与多任务部分可结合裸机综合、FreeRTOS 回访;性能篇在正确显示和交互之后阅读。网页演示可以先练思路,设备显示仍需后续验证。
七篇学习路线
支线一 · 01
先驱动手表彩屏:GC9A01 与 RGB565
沿仓库真实接线与初始化,自己组织 RGB565、设置窗口并写入彩色像素。
支线一 · 02把 LVGL 接到屏幕:缓冲、刷新与时间
把已经能写像素的驱动接到 LVGL,逐项理解缓冲区、刷新回调、字节序和时间推进。
支线一 · 03第一个界面:对象、标签与常用控件
从一行文字开始,先看懂对象指针和父子关系,再创建按钮、数值与进度条。
支线一 · 04把界面排整齐:布局、样式与显示资源
从一张卡片理解容器、留白和排布,再让文字、颜色与按钮形成一致的视觉层级。
支线一 · 05让界面响应:事件、输入与页面切换
先做一次点击加一,再区分鼠标、触摸与物理按键,最后管理多个页面的导航。
支线一 · 06让界面持续正确:数据、定时器与生命周期
把有效性、时间和对象寿命纳入界面设计,处理数据过期、页面退出和多任务交接。
支线一 · 07把刷新做稳:性能、DMA 改造与排错
先测量绘图和传输,再理解局部刷新、缓冲归还与异步状态,最后完成整套界面的功能验收。
每一步应该带走什么?
| 阶段 | 具体成果 | 下一步为什么需要 |
|---|---|---|
| 01 屏幕 | 纯色、单点、矩形和图片 | 已有可靠像素通路,才接图形库 |
| 02 移植 | 稳定缓冲、正确刷新和时间 | 库可以持续处理并显示对象 |
| 03 控件 | 一个能更新数字的基础页面 | 对象与父子关系清楚,才能安排布局 |
| 04 外观 | 留白合理、内容不重叠的卡片 | 有稳定视觉结构,才加入交互 |
| 05 交互 | 点击计数、按键意图和双页切换 | 动作与状态分开,便于接数据 |
| 06 数据 | 无效、过期和退出页面都正确处理 | 功能正确且生命周期受控 |
| 07 优化 | 有测量依据的刷新方案和故障定位 | 再考虑 DMA、双缓冲与复杂产品页面 |
实验环境与代码使用
仓库使用 LVGL 8.3.11。可先用已经配置好的 8.3 桌面模拟器练控件与页面,也可使用已完成显示移植的独立实验工程。模拟器的鼠标输入不等于手表已有触摸驱动;物理按键的接入在第 5 篇解释。
示例先讲每个新函数的作用、参数与返回值,再给调用。不要重复初始化、重复创建页面或混用 v9 接口。每篇完成后先检查显示结果与交互行为,再继续增加功能。