Add core firmware modules: input, menu, NRF24L01, OLED, protocol, PWM, storage + UI assets

This commit is contained in:
root
2026-06-25 22:55:41 +08:00
parent 97ab93e93d
commit 5c0ff0ce63
22 changed files with 3671 additions and 17 deletions

86
Core/Inc/menu.h Normal file
View File

@@ -0,0 +1,86 @@
/**
* 菜单系统与 UI 交互
* 基于 OLED 128x64 的层级菜单
* 支持: 模型选择、高频头配置、通道映射、混控、PWM驱动、首页设置
*/
#ifndef MENU_H
#define MENU_H
#include "main.h"
#include "oled.h"
#include "input.h"
#include "storage.h"
#include "pwm_out.h"
#include "nrf24l01.h"
/* 页面 ID */
#define PAGE_HOME 0
#define PAGE_MAIN_MENU 1
#define PAGE_MODEL_LIST 2
#define PAGE_MODEL_NEW 3
#define PAGE_MODEL_EDIT 4
#define PAGE_CHANNEL_MAP 5
#define PAGE_MIXER 6
#define PAGE_MIXER_EDIT 7
#define PAGE_TELEM 8
#define PAGE_RF_CONFIG 9
#define PAGE_NRF_CONFIG 10
#define PAGE_CRFS_CONFIG 11
#define PAGE_PWM_CONFIG 12
#define PAGE_HOME_SET 13
#define PAGE_BIND 14
#define PAGE_RF_QUICK 15
/* 菜单项最大数 */
#define MENU_MAX_ITEMS 10
/* 菜单项结构 */
typedef struct {
const char *text;
uint8_t target_page;
void (*action)(void); /* 可选回调 */
} MenuItem_t;
/* 页面上下文 */
typedef struct {
uint8_t page_id;
uint8_t cursor; /* 当前选中项 */
uint8_t scroll_offset; /* 滚动偏移 */
uint8_t item_count;
MenuItem_t items[MENU_MAX_ITEMS];
uint8_t edit_idx; /* 编辑模式下的索引 */
uint8_t edit_value; /* 编辑值 */
char edit_str[16]; /* 编辑字符串 */
uint8_t edit_str_len;
} Page_t;
/* 函数声明 */
void Menu_Init(void);
void Menu_Run(void); /* 主循环调用 */
/* 页面渲染 */
void Menu_DrawHome(void);
void Menu_DrawMainMenu(void);
void Menu_DrawModelList(void);
void Menu_DrawModelNew(void);
void Menu_DrawChannelMap(void);
void Menu_DrawMixer(void);
void Menu_DrawMixerEdit(void);
void Menu_DrawRFConfig(void);
void Menu_DrawNRFConfig(void);
void Menu_DrawCRFSConfig(void);
void Menu_DrawPWMConfig(void);
void Menu_DrawHomeSet(void);
void Menu_DrawBind(void);
void Menu_DrawRFQuick(void);
/* 混控计算 */
void Mixer_Compute(int16_t *channels);
/* 全局页面状态 */
extern Page_t g_page;
/* 通道输出值 (混控后) */
extern int16_t g_channels[CHANNEL_COUNT];
#endif /* MENU_H */