1. 项目背景与赛事解析
蓝桥杯全国软件和信息技术专业人才大赛是国内最具影响力的IT类学科竞赛之一,其嵌入式设计与开发赛道主要考察参赛者在STM32平台上的嵌入式系统开发能力。第十二届省赛第二阶段试题延续了往届"基于真实工业场景命题"的特点,要求选手在限定时间内完成具有完整功能的嵌入式系统开发。
这个赛题的核心在于考察三个维度的能力:
- 硬件层:对STM32F103RBT6最小系统板的引脚分配与外围电路设计能力
- 驱动层:TIM定时器、ADC模数转换、PWM输出等外设的配置与调优
- 应用层:状态机设计、人机交互逻辑与实时控制算法的实现
提示:省赛第二阶段通常会在基础功能外设置2-3个难度递增的"隐藏得分点",这些往往涉及外设的复合使用或异常处理机制
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件系统架构设计
2.1 核心硬件选型分析
开发平台采用官方指定的CT117E-M4竞赛板(基于STM32F103RBT6),其关键外设配置如下:
| 外设类型 | 具体功能 | 对应引脚 | 竞赛使用场景 |
|---|---|---|---|
| GPIO | 按键输入 | PA0-PA3 | 用户交互控制 |
| ADC | 电位器模拟量采集 | PA4 | 参数调节输入 |
| TIM | PWM输出 | PA6-PA7 | LED亮度/电机控制 |
| USART | 调试信息输出 | PA9-PA10 | 状态监控与故障诊断 |
| I2C | EEPROM数据存储 | PB6-PB7 | 参数持久化存储 |
2.2 电源管理设计要点
竞赛板采用AMS1117-3.3V稳压芯片,在实际开发中需特别注意:
- 模拟电路供电:ADC参考电压需并联10μF+0.1μF去耦电容
- 数字电路供电:每个VDD引脚至少配置0.1μF陶瓷电容
- 电机驱动部分:若涉及大电流负载需单独供电并加装二极管隔离
c复制// 电源初始化示例代码
void Power_Config(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
PWR_BackupAccessCmd(ENABLE); // 启用备份域访问
RCC_LSEConfig(RCC_LSE_ON); // 开启低速外部时钟
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET); // 等待时钟稳定
}
3. 关键外设驱动实现
3.1 多通道ADC采集方案
赛题要求实现电位器输入的0-3.3V模拟量采集,并转换为0-100%的百分比值。推荐采用DMA+定时器触发的方式提高采样效率:
- 配置ADC1的通道4(PA4)为规则通道
- 设置TIM3触发ADC采样(建议1kHz采样率)
- 启用DMA循环传输模式存储转换结果
c复制// ADC配置代码片段
void ADC1_Init(void)
{
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
// DMA配置
DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&ADC1->DR;
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 1;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable
