缘由
项目中人机交互,使用带触摸的显示屏。移植过LVGL,刷屏速率极慢,不能忍受。故搭建了一套UI
硬件
MCU:GD32F103VE
LCD接口:8060/SPI(两者皆用过)(800*480 565)
思路
- 所需控件
页面里面会显示控件:①文本框;②标签;③TAB类;④下拉框;⑤复选框;⑥按钮 - 限制
页面数量不可估量,每一个控件使用malloc动态分配内存,仅当需要显示的时候分配内存。切换到其他页面时,释放之前页面的控件。
控件需求
控件描述
- 提示信息:提示信息区域
- TAB控件:同一页面下的多个页面
- 文本框:输入文本
- 下拉框:
- 复选框:选中或者不选中
- 按钮:
控件要素
控件总共分为6类,如下枚举表示
typedef enum MenuInfoType
{
E_TYPE_ICON, //图标
E_TYPE_TAB, //TAB
E_TYPE_BUTTON, //按钮
E_TYPE_TEXT, //文本框
E_TYPE_CHECKBOX, //复选框
E_TYPE_CMBBOX, //下拉框
}EMenuInfoType;
控件包含如下的属性
typedef struct