2023-11-29 10:04:40 +00:00
|
|
|
|
# MultMenu
|
2024-04-06 18:31:40 +00:00
|
|
|
|
这是一个用于单色OLED屏幕的单片机多级菜单,采用双向链表结构,移植方便、在容量足够的情况下可无限扩展。
|
2024-04-11 15:58:00 +00:00
|
|
|
|
- 菜单支持类型有:
|
2024-06-21 14:24:29 +00:00
|
|
|
|
1. PARENTS:内含子菜单项
|
|
|
|
|
2. LOOP_FUNCTION:循环运行某项功能
|
|
|
|
|
3. ONCE_FUNCTION: 单次运行某项功能
|
|
|
|
|
4. SWITCH:开关型
|
|
|
|
|
5. DATA:可调参数型
|
|
|
|
|
6. RETURN: 用于上级返回
|
2024-06-21 05:52:28 +00:00
|
|
|
|
- 全局使用非线性动画(类PID控制器)
|
2024-04-11 16:00:11 +00:00
|
|
|
|
在菜单数据结构上参考开源项目:https://github.com/morepray/MorepUI
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# 移植准备
|
2024-06-21 14:24:29 +00:00
|
|
|
|
- 在menuConfig.h中配置你的屏幕分辨率与菜单字体。
|
2024-06-21 05:52:28 +00:00
|
|
|
|
- 往dispDirver.c中替换你的屏幕驱动,亦可使用example中的移植的u8g2库。
|
2024-04-11 15:58:45 +00:00
|
|
|
|
- 需在Menu_State BtnScan(void)函数中放入按键扫描程序。
|
2024-06-21 05:52:28 +00:00
|
|
|
|
- 在新增菜单项时,应在menu.c中定义菜单所在页面(page)和菜单项(item),然后在Craete_MenuTree中通过AddPage、AddItem加入。
|
|
|
|
|
- 建立一个xMenu类型的全局结构体
|
|
|
|
|
- 最后将Menu_Init和Menu_Loop放入你的程序中。
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# Example
|
|
|
|
|
基于STM32F103C8T6,使用硬件I2C2驱动0.96寸OLED(SSD1306),按键为串口虚拟按键
|
|
|
|
|
其中:
|
2024-04-21 08:09:27 +00:00
|
|
|
|
- 0x01为上移按键
|
|
|
|
|
- 0x02为下移按键
|
|
|
|
|
- 0x03为确认按键
|
2024-04-06 18:31:40 +00:00
|
|
|
|
# 效果如下
|
2024-03-31 15:39:32 +00:00
|
|
|
|

|
|
|
|
|

|
2024-06-21 06:44:09 +00:00
|
|
|
|
- 视频演示地址:https://b23.tv/TOwmuKL
|