- 开机: 长按返回键2s开机,显示左侧Logo+右侧'Starting...'开机画面2秒 - 关机: 主页未连接接收机时长按返回键2s关机 - 关闭OLED/LED/PWM/NRF24L01/USB/外设时钟 → STOP休眠 - 唤醒后自动复位重启 - 已连接接收机时屏蔽关机,防止飞行中误操作 - 添加 Input_IsKeyHeldFor() 指定时长按键检测 - 添加 OLED_Off() 关闭显示 - 更新 README.md 文档
萝莉3代遥控器 (Loli3 RC)
基于STM32F103RBT6的开源航模遥控器固件。
硬件配置
- MCU: STM32F103RBT6 (Cortex-M3, 128KB Flash, 20KB RAM)
- 显示屏: SSD1306 128x64 OLED (硬件I2C, PB10/PB11)
- 按键: 4个 (PB12/PB13/PB14/PB15: 上/下/确认/返回)
- 输入: 16个ADC通道 (PC0-PC3, PA0-PA7, PC4-PC5, PB0-PB1)
- 无线: NRF24L01+ (SPI: PB3/PB4/PB5, CE: PB7, CSN: PB6, IRQ: PD2)
- PWM输出: 2路 (PB8/PB9)
- LED: 3个 (PC6/PC7/PC8)
- 串口: UART1 (PA9/PA10), UART3 (PC10/PC11)
- USB: USB虚拟串口/Joystick (PA11/PA12)
功能特性
1. 多模型支持
- 支持最多10个模型配置
- 模型类型选择 (固定翼/车/船/多轴)
- 每个模型独立的通道映射、混控配置
2. 通道系统
- 16个输入通道,支持ADC或按键自动识别
- 每个通道可设置: 端点、反向、曲线
- 8个可编程混控
3. 无线协议
- NRF24L01+ 2.4G无线 (默认)
- 支持CRFS协议 (后续实现)
- 自动对频功能
4. UI界面
- 主页值显示/回传显示
- 完整的菜单系统
- 中文支持
5. 特色功能
- PWM输出可配置为: WS2812 LED / 普通LED / 振动
- USB虚拟Joystick功能
- 回传数据显示
项目结构
LoliRC/
├── Makefile # 编译脚本
├── README.md # 说明文档
└── src/
├── main.c # 主程序
├── config.h # 硬件配置
├── hal.h/.c # HAL抽象层
├── oled.h/.c # OLED驱动
├── key.h/.c # 按键驱动
├── adc.h/.c # ADC驱动
├── led.h/.c # LED驱动
├── nrf24l01.h/.c # NRF24L01驱动
├── eeprom.h/.c # EEPROM存储
├── model.h/.c # 模型配置管理
├── ui.h/.c # UI界面系统
├── pwm.h/.c # PWM输出驱动
├── ui/
│ └── README.md # UI设计说明
└── WordStock.h # 字库
编译与烧录
依赖
- arm-none-eabi-gcc
- OpenOCD 或 STM32CubeProgrammer
编译
cd LoliRC
make
烧录
使用STM32CubeProgrammer或OpenOCD烧录生成的hex/bin文件。
UI操作说明
开机
- 长按返回键约2秒开机
- 显示开机画面: 左侧为开机Logo,右侧居中显示"Starting..."
- 开机画面持续2秒后进入主页
主页
- 显示各通道当前值
- 长按OK键进入高频头配置
- 长按BACK键切换值/回传显示
- 短按OK键进入主菜单
关机
- 在主页(未连接接收机时)长按返回键2秒关机
- 关机流程: 关闭OLED → 关闭LED → 停止PWM → 关闭NRF24L01 → 关闭USB → 关闭外设时钟 → 进入STOP休眠模式
- 唤醒后自动复位重启
- 注意: 当遥控器已连接到接收机时,长按返回键不会关机,防止飞行中误操作
主菜单
- Model Select - 模型选择/新建/编辑/删除
- RF Config - 高频头配置
- Channel Map - 通道映射
- Mixer - 混控设置
- PWM Driver - PWM输出配置
- Home Settings - 主页设置
默认配置
- NRF24L01频道: 60
- 数据速率: 2Mbps
- 对频短语: "LOVE"
许可证
MIT License
Languages
C
97.9%
Assembly
1.9%
C++
0.2%