新闻详情

新闻详情

首页 / 资讯中心 / 详情

嵌入式状态机设计——两个变量就够了

发布时间:2026/8/31 20:51:16来源:尧图网络
嵌入式状态机设计——两个变量就够了
一句话: 设备启动需要多步序列加热A→加热B→开输出同时要随时关机、空闲手动控制。用两个变量触发标志 状态位就能全覆盖比五六个标志位乱飞强得多。适合谁读写嵌入式控制逻辑状态变量越加越多的开发者。需求一个多步骤启动流程步骤1 就绪 → 步骤2 就绪 → 步骤3 开输出需求说明随时关断任意时刻收到关断指令 → 立刻全关 → 回到初始态关断后不重复全关后不会自动重开空闲时手动控制平时可以自由操作各模块自动/手动不冲突序列跑着时手动操作不干扰加一堆独立变量——启动标志、关断标志、忙标志、自动模式标志——很快互相矛盾。两个变量typedef enum { SEQ_IDLE 0, SEQ_STEP1_START, SEQ_STEP2_START, SEQ_OUTPUT_ON } E_SEQ_STATE; volatile uint8_t g_bTrig; // 触发标志1请求启动0请求关断 volatile E_SEQ_STATE g_eSeqState; // 当前序列状态状态机void Sequence_Run(void) { /* 关断路径 —— 优先级最高 */ if (g_bTrig 0) { if (g_eSeqState ! SEQ_IDLE) { Module_Off(2); // 先关输出 Module_Off(0); // 再关加热A Module_Off(1); // 再关加热B g_eSeqState SEQ_IDLE; } return; } /* 启动路径 */ switch (g_eSeqState) { case SEQ_IDLE: Module_Start(0, SETPOINT_A); g_eSeqState SEQ_STEP1_START; break; case SEQ_STEP1_START: if (Module_Ready(0)) { Module_Start(1, SETPOINT_B); g_eSeqState SEQ_STEP2_START; } break; case SEQ_STEP2_START: if (Module_Ready(1)) { Output_On(); g_eSeqState SEQ_OUTPUT_ON; } break; case SEQ_OUTPUT_ON: break; // 保持等关断 } }四种行为全覆盖g_bTrigg_eSeqState行为0IDLE空闲手动控制有效0≠ IDLE关断路径全关 → IDLE1IDLE启动序列开步骤11≠ IDLE继续跑当前序列IDLE 状态天然实现了空闲时手动控制——不需要额外标志。为什么比多标志好方案变量数状态空间多标志启动/关断/忙/自动/手动532 种组合只有 4 种合法两变量标志状态24 种全部合法多标志方案藏着大量非法组合。两变量方案跑不出非法状态。实测对比多标志方案: 5变量32种组合藏大量非法状态 | 两变量: 4种合法状态全覆盖有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。下一篇dead-code-chain-deletion——状态机、编码规范、编译链接——每个嵌入式新人都要过的三道坎
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

每日极客日报 · 2026年08月30日 2026/8/31 20:47:02

每日极客日报 · 2026年08月30日

每日极客日报 2026年08月30日 今日精选 25 条 IT 科技热点,覆盖 AI 大模型、开源项目、云原生、工程实践与硬件基础设施等领域。 🔥 今日头条 腾讯混元 Hy4 preview 开源:770B MoE、Apache 2.0、1M 上下文 腾讯 8 月 28 日发布并全面开源新…

阅读更多 →
JDK 1.8帮助文档:Java开发者常青树的深度阅读指南 2026/8/31 20:47:02

JDK 1.8帮助文档:Java开发者常青树的深度阅读指南

简介:本资源为Java JDK 1.8官方帮助文档完整离线版,面向Java初学者、中级开发者及企业级应用维护人员,解决在线查阅不便、网络受限或需快速检索API细节等实际开发痛点。压缩包为ZIP格式,共含数千个HTML页面文件(含索引…

阅读更多 →
LabVIEW例子源代码实操指南:拆解调试到工程化改造 2026/8/31 20:47:02

LabVIEW例子源代码实操指南:拆解调试到工程化改造

简介:本资源是一套面向LabVIEW初学者与工程实践者的完整学习案例集,涵盖数据采集、仪器控制、人机界面设计及Web发布等典型应用场景,适用于高校实验教学、自动化项目开发与NI平台技能提升。压缩包共167个文件,主体为154个可直接运…

阅读更多 →
SpiderFoot实战:构建自动化OSINT情报收集与资产测绘体系 2026/8/31 20:47:02

SpiderFoot实战:构建自动化OSINT情报收集与资产测绘体系

做安全测试、做资产梳理或者做威胁建模的时候,最先遇到的一个问题往往是:信息太零散。域名下有哪些子域、IP 归属哪个网段、绑定了哪些证书、邮箱出现在哪些公开数据中、这些资产之间又有什么关联……如果全靠手工一个个去查,不仅效率低&…

阅读更多 →
从Inspire拓扑优化到HyperMesh网格尺寸控制:完整工作流解析 2026/8/31 20:47:02

从Inspire拓扑优化到HyperMesh网格尺寸控制:完整工作流解析

在实际工程环境中,HyperMesh 的价值不只是网格划分:它要把一套从概念设计到有限元模型再到求解器输入卡片的流程穿起来。这里的两类工具往往被教程拆开讲,但在项目里是配合使用的:一类是 solidThinking Inspire(主版本…

阅读更多 →
四旋翼无人机动力学、控制与路径规划:MATLAB工程实践解析 2026/8/31 20:42:01

四旋翼无人机动力学、控制与路径规划:MATLAB工程实践解析

简介:本资源面向控制工程、机器人学及无人机方向的本科生与研究生,聚焦四旋翼飞行器建模、控制律设计与自主路径规划三大核心问题,提供一套完整可运行的MATLAB仿真学习方案。压缩包共52个文件,含45个.m主程序与函数脚本&#xff0…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞