1. 菜单显示进程的工程架构与设计哲学
在嵌入式实时系统中,人机交互界面(HMI)绝非简单的“显示文字”任务。它是一个横跨硬件驱动、状态管理、用户输入响应和多任务协同的复合系统。对于STM32智能平衡小车这类资源受限、功能密集的实时控制平台,菜单系统的设计必须遵循三个核心原则:确定性、低侵入性、可维护性。确定性要求菜单刷新与按键响应必须在严格的时间窗口内完成,不能干扰PID控制环等硬实时任务;低侵入性意味着菜单逻辑不能占用过多CPU周期或内存带宽,避免拖慢主控性能;可维护性则体现在模块化封装上,使功能扩展与调试成为可能。
本项目采用分层架构实现菜单系统,其物理基础是OLED显示屏(SSD1306控制器)、五路独立按键(UP/DOWN/LEFT/RIGHT/CENTER)以及RGB状态指示灯。整个系统被解耦为三个独立但协同工作的软件模块:CaSystem.c负责底层硬件抽象与系统状态管理,OLED.c提供像素级显示驱动,OLED_Show.c则承载全部菜单业务逻辑。这种分层并非教条式设计,而是源于实际工程约束——当OLED刷新一次需耗时约8ms(128x64分辨率,SPI 5MHz),若将所有逻辑揉进一个函数,主循环将严重阻塞,导致MPU6050数据采集延迟、PID计算失步,最终小车失控。因此,“静态内容仅初始化一次,动态内容周期性刷新”的策略,本质上是对MCU计算资源的精确预算与分配。
2. 硬件外设配置:从原理图到寄存器映射
菜单系统的硬件支撑依赖于对GPIO端口的精准配置。所有外设引脚均需根据原理图进行映射,并严格遵循STM32 HA