一、项目是什么这是一个用STM32F103C8T6单片机加FreeRTOS操作系统做的智能油烟机项目。它能自动检测厨房烟雾浓度和温湿度根据环境自动调节风机转速。它支持手动控制挡位还有防回流检测和待机模式。它带LCD屏幕显示状态按键切换模式蜂鸣器提示音。它支持串口固件升级不用拆机就能更新程序。二、硬件大体构成主控芯片是STM32F103C8T6相当于系统的大脑。直流有刷电机加驱动板负责排风12V电源适配器供电。MQ2烟雾传感器和DHT11温湿度传感器负责环境检测。LCD屏幕负责显示按键负责输入蜂鸣器负责提示。编码器装在电机上测转速串口和ST-LINK负责调试和烧录。三、软件架构怎么分层整个软件分成三层分别是驱动层中间层和应用层。驱动层直接操作单片机外设比如控制电机读传感器显示屏幕。中间层是FreeRTOS操作系统负责任务调度和资源管理。应用层按功能划分成多个任务每个任务只做一件事。分层的好处是底层驱动和应用逻辑解耦换硬件不用改上层代码。四、应用层划分了哪些任务编码器测速任务负责算电机实际转速优先级最高。电机控制任务负责速度闭环用PID让实际转速跟上目标转速。按键扫描任务负责检测按键处理短按和长按。传感器采集任务负责读DHT11和MQ2的数据。风速计算任务负责根据传感器数据算出合适的风速。防回流任务负责检测油烟倒灌防止风机反复启停。UI显示任务负责刷新LCD屏幕优先级最低。每个任务按自己的周期运行比如传感器每500毫秒采一次UI每200毫秒刷新一次。五、任务之间怎么通信任务间用互斥量加全局变量的方式共享数据。全局变量集中放在一个系统状态结构体里比如当前模式风速值转速值。任务要读写共享数据前先获取互斥量用完立即释放。选互斥量而不是队列是因为只关心最新状态不需要历史数据内存开销也小。六、优先级怎么设计FreeRTOS里数值越大优先级越高本项目用了7个优先级等级。测速任务放最高因为转速数据是控制的基础需要及时更新。电机控制任务其次按键扫描居中UI显示放最低。传感器和风速计算同级靠时间片轮转调度。设计思路是重要且紧急的任务优先慢任务不阻塞快任务。七、几个核心机制风速融合算法把温度湿度烟雾浓度归一化后加权计算烟雾权重最高。PID闭环控制让电机转速稳定误差控制在百分之五以内。防回流用动态阈值第一次触发就切高阈值浓度回落后才关风机。自动模式是状态机有启动烹饪和延时关机三个状态。Bootloader升级流程是Python生成带CRC32校验的固件串口加DMA接收校验通过才写Flash并跳转。八、我的理解这个项目学的是FreeRTOS多任务架构任务怎么划分优先级怎么定数据怎么保护。其次是驱动层的写法用结构体封装外设代码复用性高。最后是PID闭环和Bootloader。我的复现计划是先了解整个项目的大体框架然后变为PC机一步一步跑代码理解每一段代码的含义遇到问题查资料补习不懂得点。硬件等材料到齐花一天时间组装起来上电跑一遍。