这是 QP 状态机系列第六篇实战内容,Blinky 相当于 QP 框架里的 HelloWorld,先把 QP-bundle 套件装好、配置环境变量,再跑通控制台版闪灯例程,就能直观理解 QP 事件驱动、活动对象、定时信号的核心逻辑。很多新手一开始踩坑,大多是安装路径带空格、环境变量没生效、不会用 Make 编译,本篇优先在 PC 控制台跑通,不用单片机开发板,先看懂状态流转,之后再移植到 STM32 等硬件上,下面把组件清单、安装流程、编译运行、状态机逻辑、常见坑拆开讲清楚。
一、QP 套件包含组件清单
- QP/C:C 语言版本核心状态机框架,本次 Blinky 使用
- QM Modeler:图形化 UML 状态机建模工具,可以自动生成 C 代码
- QTools:配套工具包,内置 MinGW、make、qspy 追踪调试工具
- 配套例程:包含 console 控制台版本、Cortex-M 单片机版本 Blinky
二、控制台 Blinky 和硬件 Blinky 对比表
| 版本 | 运行环境 | BSP 板级支持包 | 效果 | 上手门槛 |
|---|---|---|---|---|
| 控制台 Blinky | Windows/Linux/macOS 电脑 | 模拟 LED 打印日志 | 终端交替打印 LED ON/OFF | 低,不需要开发板 |
| 硬件 Blinky | STM32、Arduino 等 MCU | 操作寄存器控制真实 IO 口 | 开发板 LED 周期性闪烁 | 高,需要硬件、调试器 |
三、分步安装与环境验证步骤
- 下载 QP-bundle 安装包,优先官网获取对应系统版本,安装路径不要带空格,推荐 C:\qp,不要装在 Program Files 文件夹。
- 安装时勾选全部组件:QP/C、QM、QTools,安装完成后关闭所有旧终端窗口。
- 打开新 CMD,执行where make、where qspy,确认能正常打印路径;找不到就手动把 C:\qp\qtools\bin 加入系统 PATH。
- 进入 Blinky 例程目录:C:\qp\qpc\examples\workstation\blinky。
- 执行 make 编译,编译成功后进入 build 目录,运行 blinky.exe,终端会每 500ms 切换一次 ON/OFF 日志。
- 按下 Ctrl+C 退出程序,这就是第一个跑通的 QP 状态机工程。
四、Blinky 状态机核心逻辑
- 初始状态:进入 off 状态,熄灭 LED,同时启动 500ms 定时事件 TIMEOUT。
- 收到 TIMEOUT 信号,从 off 切换到 on 状态,点亮 LED,继续启动定时。
- 再次收到 TIMEOUT 信号,从 on 切回 off 状态,熄灭 LED,循环往复。
- 整个程序是事件驱动,不是 while 轮询,这也是 QP 状态机和普通裸机代码最大区别。
五、新手高频踩坑清单
- 安装路径带空格,make 脚本解析路径失败,直接编译报错。
- 终端窗口没重启,PATH 环境变量不生效,提示 make 不是内部命令。
- 混淆 QP/C、QP/C++、QP-nano 版本,打开不匹配的例程。
- 直接上手硬件版本,BSP 没有适配,优先建议先跑控制台版本验证框架。
- 把 Blinky 当成简单延时循环,忽略 QP 的事件队列、活动对象底层机制。
【相关 FAQ】
问题 1:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,Blinky 在 QP 状态机学习里是什么定位?
回答 1:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,Blinky 是 QP 框架入门的 HelloWorld 例程,用来理解事件驱动、状态跳转、定时信号、活动对象,优先在 PC 控制台验证,再移植单片机。
问题 2:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,安装 QP 套件的时候路径为什么不能带空格?
回答 2:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,QP 配套的 make 编译脚本对空格敏感,路径带空格会导致编译命令识别失败,所以推荐 C:\qp 这种简短无空格路径。
问题 3:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,控制台版 Blinky 和单片机硬件 Blinky 代码差别在哪里?
回答 3:从零开始学 QP 状态机系列第六篇实战安装与第一个 Blinky,核心状态机代码完全一致,差别只在 BSP 板级支持包,控制台版本打印文字模拟 LED,硬件版本操作单片机 IO 引脚。
【参考资料】
[2026-11-12](从零开始学 QP 状态机系列 —— 第六篇:实战!安装与第一个 Blinky)电子工程专辑
[2026-11-10](QP/C 官方入门文档:Blinky 控制台例程)Quantum Leaps
[2026-09-22](QP-bundle 套件介绍、QM 建模工具使用教程)State-Machine
[2026-08-14](QP 状态机 Blinky 移植到 Cortex-M0 教程)电子工程专辑
[2026-07-05](QP 框架事件驱动编程基础,区分轮询和状态机)Quantum Leaps 官方博客
【免责声明】
本文为 QP 状态机公开教程资讯整理,不同 QP 版本、操作系统、编译器会存在少量编译差异;Blinky 仅作为入门学习例程,实际嵌入式项目需要结合硬件 BSP、中断、内存管理重新适配,信息仅作为嵌入式技术学习参考,不构成商用项目直接移植的落地建议。
本文来自作者[曙轨追踪]投稿,不代表岳鹿科技网立场,如若转载,请注明出处:https://www.newsyuelu.com/kjyw/202611/314.html
评论列表(4条)
我是岳鹿科技网的签约作者“曙轨追踪”!
希望本篇文章《从零开始学 QP 状态机环境安装与 Blinky 首个工程实战》能对你有所帮助!
本站[岳鹿科技网]内容主要涵盖:互联网行业的追踪与探索
本文概览:这是 QP 状态机系列第六篇实战内容,Blinky 相当于 QP 框架里的 HelloWorld,先把 QP-bundle 套件装好、配置环境变量,再跑通控制台版闪灯例程,就能直观理解 QP 事件驱动、活动对象、定时信号的核心逻辑。很多新手一开始踩坑,大多是安装路径带空格、环境变量没生效、不会用 Make 编译,本篇优先在 PC 控制台跑通,不用单片机开发板,先看懂状态流转,之后再移植到 STM32 等硬件上,下面把组件清单、安装流程、编译运行、状态机逻辑、常见坑拆开讲清楚。