1. 项目背景与赛事解析
蓝桥杯全国软件和信息技术专业人才大赛是国内规模最大的IT类学科竞赛之一,其嵌入式设计与开发赛道历来以"赛题紧贴工业实际、考察维度全面"著称。作为连续三届担任嵌入式赛道省赛评委的技术从业者,我观察到第16届省赛在命题思路上出现了两个显著变化:一是增加了RTOS实时性调度的考核权重,二是首次引入LoRa无线组网的应用场景。这些变化直接反映了当前嵌入式行业对"RTOS+无线通信"复合技能的需求趋势。
本次开源的参赛代码实现了一个基于STM32F103RCT6的智能环境监测终端,该作品在当年省赛中获得了华东赛区一等奖。其核心功能包括:
- 通过DHT11采集温湿度数据
- 采用BH1750实现光照强度检测
- 基于LoRa模块的无线数据传输
- FreeRTOS任务调度管理
- 0.96寸OLED多级菜单显示
特别提示:官方赛题通常要求使用指定的HAL库开发,但实际工程中寄存器开发仍具有重要价值。本解析将同时展示两种实现方式的优劣对比。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件架构深度剖析
2.1 核心控制器选型策略
STM32F103RCT6作为大赛指定芯片,其72MHz主频和256KB Flash完全满足需求。但在引脚分配上需要特别注意:
- 优先将PC13用于LED指示灯(便于评审观察运行状态)
- 保留PA9/PA10用于串口打印调试信息
- 将I2C接口固定使用PB6/PB7(避免与JTAG引脚冲突)
c复制// 正确的GPIO初始化示例(HAL库版本)
void GPIO_Init(void) {
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
2.2 传感器电路设计要点
DHT11单总
