简历-项目描述.md 4.6 KB

简历项目描述:STM32F103ZET6 多传感器监控系统

适用岗位:嵌入式软件工程师(MCU/RTOS 方向)实习 仓库:https://github.com/kekezack/STM32F103ZET6-MultiSensor-Monitor


一、简历正文(2-3 行,放项目区)

基于 CMSIS-RTOS V2 的 STM32F103ZET6 多传感器监控系统 | 个人独立开发 | 2026.07-08

基于 FreeRTOS(CMSIS-RTOS V2 标准抽象层)的嵌入式多任务系统,实现 5 页面 LCD 图形界面、多传感器采集、CLI 调试与智能休眠。采用五层驱动架构 + UI 分层框架,UI 通过函数指针表驱动页面调度,控件库以回调实现 OOP 式封装。


二、技能点(面试官会追问,必须能讲透)

技术栈

  • 芯片/RTOS:STM32F103ZET6(Cortex-M3)+ FreeRTOS(CMSIS-RTOS V2 封装)
  • 外设:LCD(FSMC)、4 线电阻触摸屏、DHT11、光敏(ADC)、SPI NOR Flash、LED、按键、USART
  • 工具链:arm-none-eabi-gcc + CMake + Ninja,clang-format 代码规范

可量化的成果(简历写这些有冲击力)

维度 数据
代码量 约 4800 行 C 代码(User/ 22 文件)
驱动模块 8 个外设驱动
UI 页面 5 页(开机/温湿度/光照/系统/LED控制)
任务划分 3 个 FreeRTOS 任务 + 启动任务
调度周期 UI 任务 10ms 轮询

架构亮点(简历 bullet 用)

  1. CMSIS-RTOS V2 标准抽象层:使用 osThreadNew/osMessageQueueNew 等标准接口而非裸调 FreeRTOS,理解 RTOS 抽象层价值
  2. UI 分层框架xPage 函数指针表统一调度渲染/刷新/输入;页面实现三接口(Render/Refresh/Process),新增页面仅需注册
  3. 控件库 OOP 式封装:按钮控件内置回调函数指针 + 焦点/按下状态,C 语言下实现"多态"
  4. 全量/增量渲染分离:切页全量重绘,周期内脏值刷新,降低 LCD 带宽占用
  5. 五层驱动架构:配置表/生命周期/API/调度/硬件抽象五层分离,设备用枚举标识
  6. 资源监控:LCD 实时显示堆剩余、各任务栈水位(uxTaskGetStackHighWaterMark

三、面试 STAR 叙事(2 分钟口述)

Situation:需要把多传感器数据采集、显示、交互整合到一个 STM32 系统,且要便于扩展。

Task:设计一个可维护、可扩展的嵌入式系统架构,而非"能跑就行"。

Action

  1. 采用 CMSIS-RTOS V2 标准接口做多任务,任务职责单一(监视/UI/Shell)
  2. 设计 UI 框架:函数指针表驱动 5 个页面,页面只实现统一接口;控件库复用(按钮/标签/数值)
  3. 五层驱动架构,配置与运行分离,新增设备只需加配置表
  4. 智能休眠:暗光 5 秒自动睡,任意输入唤醒,降低功耗

Result

  • 系统稳定运行,3 个任务 + 8 个外设协同工作
  • 新增页面/LED 控制功能只需实现 3 个接口 + 注册,扩展成本低
  • 代码规范统一(匈牙利命名 + Allman + clang-format),可读性强

四、ATS 关键词(投简历时嵌入)

嵌入式 STM32 FreeRTOS CMSIS-RTOS V2 C语言 RTOS 多线程 任务调度 驱动开发 LCD 传感器 I2C SPI UART ADC DMA 中断 GPIO 嵌入式Linux CMake Git 嵌入式系统 固件开发 物联网


五、可能被追问的问题(提前准备)

问题 参考回答要点
为什么用 CMSIS-RTOS V2 不用原生 FreeRTOS? 标准抽象层,换内核不用改上层;
函数指针表有什么好处? 新增页面零侵入;调度逻辑集中;table-driven design
全量/增量渲染为什么这样设计? LCD 写像素慢,增量只刷变化区域,降低刷新开销
任务优先级怎么定的? UI 交互要响应快(AboveNormal),监视周期任务 Normal,Shell 最低
五层驱动怎么理解? 配置与运行分离、跨层禁止调用、设备枚举标识
遇到过什么 bug 怎么解决? 如实讲一个调试案例(如 DHT11 时序、触控校准、栈溢出)

生成于 2026-08-02。面试前逐条吃透,尤其"为什么"类问题。