STM32G431实战:蓝桥杯嵌入式省赛四层升降控制器全解析
第一次接触蓝桥杯嵌入式赛题时,我被那个四层升降控制器的题目难住了——状态机跳转逻辑复杂、PWM参数配置繁琐、LED流水灯效果与楼层显示要同步更新。直到真正用STM32G431实现了一遍,才发现这些看似困难的技术点,拆解后都有清晰的解决路径。本文将带你从工程构建到烧录调试,完整复现这个典型嵌入式控制系统的开发过程。
1. 工程框架搭建与硬件初始化
拿到赛题后,我习惯先画出硬件连接示意图。这个升降控制器需要管理:
- 4个独立按键(楼层选择)
- 8个LED(4个楼层指示灯+4个方向流水灯)
- 1602液晶屏(显示当前楼层)
- 3组PWM输出(控制电机升降和门开关)
关键外设初始化顺序尤为重要:
c复制void Hardware_Init(void)
{
HAL_Init();
SystemClock_Config(); // 优先配置系统时钟
LED_KEY_Init(); // GPIO和外部中断
LCD_Init(); // 显示模块
TIM2_Init(); // 门控PWM
TIM3_Init(); // 升降PWM
TIM17_Init(); // 辅助PWM
}
注意:STM32G431的TIM2和TIM17是32位定时器,适合需要高精度控制的场景
外设配置常见问题排查表:
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| PWM无输出 | 时钟未使能 | 检查RCC相关寄存器 |
| 按键无反应 | 上拉电阻未配置 | 设置GPIO为内部上拉 |
| LCD显示乱码 | 初始化时序错误 | 调整延时参数 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 状态机设计与实现技巧
升降控制的核心是8状态有限状态机(FSM),我的实现方案是:
状态迁移逻辑:
- IDLE(0):等待按键输入
- CONFIRM(1):确认目标楼层
- CLOSE_DOOR(2-3):关门过程
- MOVE(4-5):升降运动
- **O
