1. STM32毕业设计选题策略做毕业设计最头疼的就是选题选得太简单显得没水平选得太难又怕做不出来。我带了十几届学生的毕业设计见过太多同学在选题上栽跟头。这里分享几个实战经验不要被智能二字迷惑。很多同学一上来就想做基于STM32的智能XXX系统但往往忽略了实现难度。比如有同学想做智能家居中控结果连Wi-Fi模块都调不通。建议先从具体功能入手比如基于STM32的温湿度监测系统等基础功能实现了再考虑扩展。物联网项目要谨慎。虽然物联网是热门方向但涉及云端对接、APP开发等工作量往往超出预期。有个学生做智能花盆STM32部分两周就搞定了但开发安卓APP却花了两个月。如果一定要做物联网项目建议使用成熟的云平台比如阿里云IoT避免自己搭建服务器。硬件成本要考虑。有些题目需要特殊传感器比如做气体检测需要MQ系列传感器做心率监测需要MAX30102这些模块价格从几十到几百不等。之前有同学选题时没考虑成本后来发现需要的激光雷达要上千元只能临时换题。推荐几个稳妥的选题方向环境监测类温湿度、光照、空气质量等传感器便宜且资料多控制类智能窗帘、自动浇花等执行机构简单步进电机/继电器仪器仪表类示波器、信号发生器等侧重软件算法数据采集类多通道ADC采集、波形记录等硬件简单但可以体现编程能力2. 硬件设计避坑指南选好题目后硬件设计是第一个难关。根据我的经验STM32硬件设计有三大陷阱电源设计最容易出错。很多同学直接用USB供电结果发现接上电机后单片机就重启。STM32F103的典型工作电流是50mA但如果驱动外围设备比如OLED屏、电机等建议选择至少500mA的LDO如AMS1117-3.3。有个实用技巧在电源入口加一个470μF的电解电容可以避免电机启动时的电压跌落。IO口分配要规划好。经常遇到学生把所有外设都接在PA口结果发现不够用了。建议提前列个表格外设所需IO已占用引脚备用方案OLEDPB6~PB7(I2C)PB6,PB7改用SPI接口按键PC13PC13可改用PA0电机PA8(TIM1_CH1)PA8无替代需保留传感器接口要留余量。比如做环境监测系统除了计划中的温湿度传感器最好多留1-2个ADC通道和I2C接口。这样后期想加个气压计或者光照传感器就很方便。我有个学生就因为没留备用接口想升级功能时只能重新画板子。调试技巧先用杜邦线搭建最小系统核心功能调通后再设计PCB。这样能避免原理设计错误导致整板报废。3. 软件开发实战技巧软件部分是体现技术水平的关键。根据项目复杂度我推荐三种开发模式裸机开发适合简单项目。用STM32CubeMX生成初始化代码然后直接写main函数。关键是要用好定时器中断// 在main.c中添加定时器回调函数 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim-Instance TIM2) // 100ms定时器 { static uint8_t cnt 0; if(cnt 10) // 1秒执行一次 { cnt 0; Read_Sensors(); // 传感器读取 } } }RTOS开发适合多任务项目。FreeRTOS是首选内存占用小且资料多。创建任务时要注意堆栈分配// 创建传感器读取任务 xTaskCreate(Sensor_Task, // 任务函数 Sensors, // 任务名 128, // 堆栈大小(字) NULL, // 参数 2, // 优先级 NULL); // 任务句柄模块化编程是必备技能。把不同功能分成单独的文件比如/Drivers /BSP bsp_gpio.c // GPIO相关 bsp_i2c.c // I2C设备驱动 /App sensor_mgr.c // 传感器管理 data_proc.c // 数据处理 ui_handler.c // 用户界面调试建议一定要用SWD调试器配合STM32CubeIDE的实时变量监控功能比串口打印高效得多。遇到HardFault时可以检查Call Stack找到出错位置。4. 典型项目实现方案这里以常见的智能农业监测系统为例给出具体实现步骤硬件组成主控STM32F103C8T6最小系统板性价比高传感器DHT11温湿度传感器GPIOBH1750光照传感器I2C土壤湿度传感器ADC通信ESP8266 WiFi模块串口AT指令显示0.96寸OLEDI2C执行继电器控制水泵GPIO软件流程上电初始化各外设连接WiFi需处理AT指令超时定时读取传感器数据建议1分钟一次数据显示到OLED数据上传云平台如ThingsBoard根据阈值控制水泵关键代码片段// WiFi连接处理 void WiFi_Connect(void) { uint8_t retry 3; while(retry--) { ESP8266_SendCmd(ATCWJAP\SSID\,\PASSWORD\, OK, 10000); if(ESP8266_WaitResponse(OK, 5000)) break; HAL_Delay(1000); } } // 传感器数据打包 void Pack_Data(void) { sprintf(tx_buf, {\temp\:%.1f,\humi\:%.1f,\lux\:%d,\soil\:%d}, dht11_data.temp, dht11_data.humi, bh1750_lux, soil_moisture); } // 水泵控制逻辑 void Water_Control(void) { if(soil_moisture 30) // 土壤干燥 { HAL_GPIO_WritePin(PUMP_GPIO_Port, PUMP_Pin, GPIO_PIN_SET); osDelay(5000); // 浇水5秒 HAL_GPIO_WritePin(PUMP_GPIO_Port, PUMP_Pin, GPIO_PIN_RESET); } }5. 论文撰写与答辩要点论文不是代码的堆砌而要体现工程思维。我总结了一个问题-方案-验证的写作框架引言部分要聚焦具体问题。不要说农业监测很重要而要写 根据农业农村部2022年数据大棚种植因环境失控导致的减产达15%。现有监测设备存在成本高500元/台、功耗大需持续供电等问题制约了小规模农户使用。方案设计要有对比数据。比如选型STM32F103时可以列表对比型号价格FLASHRAMADC适用性STM32F103864KB20KB12位成本敏感型STM32F407351MB192KB12位高性能需求ESP32254MB520KB12位无线项目实验结果要量化。避免系统运行良好而要写 经72小时连续测试温湿度测量误差±5%光照强度量程0-65535lux土壤湿度检测分辨率1%。在4G网络环境下数据上传成功率达98.7%。答辩时要准备三个层面的问题基础问题用了哪些外设I2C通信速率是多少设计问题为什么选择DHT11而不是SHT30如何解决WiFi断连扩展问题如果要增加CO2监测系统需要做哪些改进实物演示时要注意准备备用设备至少多带一块开发板演示前充满电或者直接用USB供电关键功能要有应急方案比如网络不好时改用本地数据展示最后提醒论文格式要严格按照学校模板特别是图表编号、参考文献格式这些细节。我见过不少同学内容做得很好却因为格式问题被扣分实在可惜。