摘要:本课将前面 18 课所学的 Zephyr 知识整合为一个完整的 STM32 综合项目。你将基于 STM32 Nucleo-F303RE 开发板,从 LED、Button 等基础外设出发,逐步引入 UART、Message Queue、Timer、Work Queue、Logging 与 Mutex,最终搭建一个事件驱动的模块化软件架构。课程按 7 个步骤循序渐进,并给出进阶扩展方向(ADC、PWM、I2C、SPI、RTC、USB CDC、BLE),帮助你把零散 API 串联成接近真实产品的工程实践。
很好,我们进入第 19 课:STM32 Project(综合项目)。
根据前面的 Zephyr 学习路线,你已经完成了:
✅ 01~05:环境、Hello World、GPIO、Button、UART
✅ 06~09:Kconfig、Devicetree、Overlay
✅ 10~18:Thread、Semaphore、Mutex、Message Queue、Timer、Work Queue、Logging、Driver、自定义 Driver
现在应该开始把这些知识整合成一个完整的嵌入式项目,而不是单独学习 API。STM32 综合项目也是 STM32 官方推荐的学习方式之一:从简单外设逐步组合到 RTOS、多任务和驱动开发。
第 19 课 STM32 Project
目标:
做一个接近真实产品的软件架构。
建议使用你的开发板:
STM32 Nucleo-F303RE
最终效果
假设板子连接:
Button │ ▼ Message Queue │ ▼ Application Thread │ ├── LED ├── UART Log ├── Timer └── Work Queue运行效果:
Press Button ↓ UART Button pressed ↓ LED Toggle ↓ Start Timer ↓ Work Queue ↓ Print Log这里几乎覆盖了 Zephyr Kernel 最常用的机制。
项目目录
stm32_project/ ├── app │ ├──`main.c`│ ├──`led.c`│ ├──`led.h`│ ├──`button.c`│ ├──`button.h`│ ├──`event.c`│ ├──`event.h`│ ├──`worker.c`│ └──`worker.h`│ ├──`CMakeLists.txt`├──`prj.conf`└──`app.overlay`下面是stm32_project的完整目录树图,展示了app目录下的源文件与头文件,以及根目录下的构建配置文件: