|
|
@@ -16,20 +16,23 @@
|
|
|
## 二、技能点(面试官会追问,必须能讲透)
|
|
|
|
|
|
### 技术栈
|
|
|
+
|
|
|
- 芯片/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 轮询 |
|
|
|
+
|
|
|
+| 维度 | 数据 |
|
|
|
+| -------- | ------------------------------------- |
|
|
|
+| 代码量 | 约 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 语言下实现"多态"
|
|
|
@@ -46,12 +49,14 @@
|
|
|
**Task**:设计一个可维护、可扩展的嵌入式系统架构,而非"能跑就行"。
|
|
|
|
|
|
**Action**:
|
|
|
+
|
|
|
1. 采用 CMSIS-RTOS V2 标准接口做多任务,任务职责单一(监视/UI/Shell)
|
|
|
2. 设计 UI 框架:函数指针表驱动 5 个页面,页面只实现统一接口;控件库复用(按钮/标签/数值)
|
|
|
3. 五层驱动架构,配置与运行分离,新增设备只需加配置表
|
|
|
4. 智能休眠:暗光 5 秒自动睡,任意输入唤醒,降低功耗
|
|
|
|
|
|
**Result**:
|
|
|
+
|
|
|
- 系统稳定运行,3 个任务 + 8 个外设协同工作
|
|
|
- 新增页面/LED 控制功能只需实现 3 个接口 + 注册,扩展成本低
|
|
|
- 代码规范统一(匈牙利命名 + Allman + clang-format),可读性强
|
|
|
@@ -66,14 +71,14 @@
|
|
|
|
|
|
## 五、可能被追问的问题(提前准备)
|
|
|
|
|
|
-| 问题 | 参考回答要点 |
|
|
|
-|------|------------|
|
|
|
-| 为什么用 CMSIS-RTOS V2 不用原生 FreeRTOS? | 标准抽象层,换内核不用改上层;CubeMX 默认生成 |
|
|
|
-| 函数指针表有什么好处? | 新增页面零侵入;调度逻辑集中;table-driven design |
|
|
|
-| 全量/增量渲染为什么这样设计? | LCD 写像素慢,增量只刷变化区域,降低刷新开销 |
|
|
|
-| 任务优先级怎么定的? | UI 交互要响应快(AboveNormal),监视周期任务 Normal,Shell 最低 |
|
|
|
-| 五层驱动怎么理解? | 配置与运行分离、跨层禁止调用、设备枚举标识 |
|
|
|
-| 遇到过什么 bug 怎么解决? | 如实讲一个调试案例(如 DHT11 时序、触控校准、栈溢出) |
|
|
|
+| 问题 | 参考回答要点 |
|
|
|
+| ------------------------------------------ | --------------------------------------------------------------- |
|
|
|
+| 为什么用 CMSIS-RTOS V2 不用原生 FreeRTOS? | 标准抽象层,换内核不用改上层; |
|
|
|
+| 函数指针表有什么好处? | 新增页面零侵入;调度逻辑集中;table-driven design |
|
|
|
+| 全量/增量渲染为什么这样设计? | LCD 写像素慢,增量只刷变化区域,降低刷新开销 |
|
|
|
+| 任务优先级怎么定的? | UI 交互要响应快(AboveNormal),监视周期任务 Normal,Shell 最低 |
|
|
|
+| 五层驱动怎么理解? | 配置与运行分离、跨层禁止调用、设备枚举标识 |
|
|
|
+| 遇到过什么 bug 怎么解决? | 如实讲一个调试案例(如 DHT11 时序、触控校准、栈溢出) |
|
|
|
|
|
|
---
|
|
|
|