设计状态机时,先画转换条件,再画状态

发布时间:2026/7/15 10:08:49

设计状态机时,先画转换条件,再画状态
一句话: 很多人设计状态机先枚举有哪些状态再想怎么转换容易漏掉转换路径。反过来先画条件矩阵——每个条件组合下应该发生什么——状态自然浮现。适合谁读适合嵌入式开发者、单片机初学者及遇到类似问题的工程师常规做法的问题拿到需求第一反应是列状态IDLE → STARTING → RUNNING → FAULT → ...然后想从 IDLE 怎么到 STARTING从 STARTING 怎么到 RUNNING这种做法容易漏正在 STARTING 时收到关断指令 → 没画这条线已经在 FAULT 了又收到关断 → 没画这条线关断后又收到开机 → 会不会重开不知道先枚举状态再想转换 从答案反推条件容易漏。反过来先列条件矩阵条件 1: 触发标志 0 还是 1 条件 2: 当前在什么状态两个条件的组合穷举触发标志当前状态应该发生什么0IDLE什么都不做0非 IDLE关断回 IDLE1IDLE启动序列第一步1非 IDLE继续当前序列状态名IDLE / STARTING / RUNNING是后来加的——条件矩阵先写好了状态只是给每个组合取的名字。为什么这样做先枚举状态先画条件矩阵2^4 16 种条件组合只覆盖了 4 种16 种全列出来每个都明确容易漏转换路径不可能漏——每个组合都有答案新增条件要改所有状态新增条件加一列就行穷举不是笨办法——嵌入式状态机的条件数通常 ≤ 3最多 8 种组合。全列出来比漏掉强。经验条件矩阵先写状态名后取。每个条件组合下的行为定了状态自然浮现。多标志方案的状态空间藏着非法组合。5 个标志 32 种组合只有 4 种合法。两个变量 4 种全部合法。变量越少越不容易出 bug。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。下一篇dead-code-chain-deletion——状态机、编码规范、编译链接——每个嵌入式新人都要过的三道坎

相关新闻

改完Keil工程文件被缓存覆盖?——uvprojx编辑的进阶四坑

改完Keil工程文件被缓存覆盖?——uvprojx编辑的进阶四坑

2026/7/15 10:08:49

一句话: 上一篇《Keil工程XML编辑5次失败》讲了基本流程。本文进阶——Perl 静默失败的根因、Keil 缓存回写的时间点、uvoptx 里有 uvprojx 没有的东西、sed 一刀切误伤活跃代码。如果你不止删文件,还要批量改工程配置,这四条会帮你少踩一轮坑。 适合谁读…

KAN网络:新一代可解释神经网络架构解析

KAN网络:新一代可解释神经网络架构解析

2026/7/15 10:08:49

1. KAN网络是什么?为什么它能引发热议?KAN(Kolmogorov–Arnold Networks)是2024年由MIT、加州理工等机构提出的全新神经网络架构。它的核心创新点在于对传统MLP(多层感知器)做了一个看似简单却影响深远的改…

XHRefreshControl性能优化技巧:让你的iOS应用流畅如丝

XHRefreshControl性能优化技巧:让你的iOS应用流畅如丝

2026/7/15 9:58:49

XHRefreshControl性能优化技巧:让你的iOS应用流畅如丝 【免费下载链接】XHRefreshControl XHRefreshControl 是一款高扩展性、低耦合度的下拉刷新、上提加载更多的组件。 项目地址: https://gitcode.com/gh_mirrors/xh/XHRefreshControl XHRefreshControl是一…

OpenCore Legacy Patcher深度探索:技术揭秘与老Mac非官方升级终极指南

OpenCore Legacy Patcher深度探索:技术揭秘与老Mac非官方升级终极指南

2026/7/15 11:48:53

OpenCore Legacy Patcher深度探索:技术揭秘与老Mac非官方升级终极指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否曾为手中的MacBook P…

大金字塔建造技术解析:古代系统工程对现代软件工程的启示

大金字塔建造技术解析:古代系统工程对现代软件工程的启示

2026/7/15 11:48:53

在人类建筑史上,吉萨大金字塔(又称胡夫金字塔)以其惊人的规模、精确的几何构造和超越时代的建造技术,持续吸引着无数工程师、考古学家和历史学家的目光。这座建成于约4600年前的巨石建筑,其建造过程至今仍是未解之谜&a…

FastGPT | 06 - API 入口与统一中间件机制

FastGPT | 06 - API 入口与统一中间件机制

2026/7/15 11:48:53

开篇问题 从这一篇开始,我们进入第二阶段:请求入口与聊天主链路。 FastGPT 的主应用基于 Next.js Pages Router,API 路由集中在: projects/app/src/pages/api如果只看单个 API 文件,代码看起来很直接: async function handler(req, res) {// 解析请求// 鉴权// 调用 …

【AOSP】构建发布版本:从生成发布密钥到系统级APK签名的完整实践

【AOSP】构建发布版本:从生成发布密钥到系统级APK签名的完整实践

2026/7/15 11:48:53

1. 为什么需要替换AOSP默认测试密钥当你第一次编译AOSP系统时,可能没注意到系统默认使用的是公开的测试密钥。这些密钥存放在/build/target/product/security/目录下,包括testkey、platform、shared和media四种类型。README文件里明确警告:&q…

汽车摄像头SerDes设计:DS90UB933-Q1同轴电缆应用与信号完整性指南

汽车摄像头SerDes设计:DS90UB933-Q1同轴电缆应用与信号完整性指南

2026/7/15 11:48:53

1. 项目概述:为什么汽车摄像头需要SerDes? 如果你拆开过近几年的汽车,尤其是那些带有360度环视、高级驾驶辅助系统(ADAS)或者流媒体后视镜的车型,你可能会发现一个有趣的现象:从前保险杠到车身控…

(电赛)信号处理类报告撰写实战:从框架搭建到得分要点精讲

(电赛)信号处理类报告撰写实战:从框架搭建到得分要点精讲

2026/7/15 11:38:53

1. 信号处理类电赛报告的核心价值参加过电赛的同学都知道,报告在评分中往往占到30%-50%的比重。我当年第一次参赛时,硬件做得不错,但因为报告写得像实验记录本,最终与奖项擦肩而过。信号处理类题目尤其特殊——评委可能无法现场验…

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践

2026/7/14 10:03:09

Unity游戏文本翻译架构深度解析:XUnity.AutoTranslator的技术实现与工程实践 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator作为Unity游戏社区中最成熟的文本翻译解决方…

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持

2026/7/13 20:43:19

openEuler Raspberry Pi Kernel设备驱动开发指南:为树莓派硬件添加支持 【免费下载链接】raspberrypi-kernel It provides openEuler kernel source for Raspberry Pi 项目地址: https://gitcode.com/openeuler/raspberrypi-kernel 前往项目官网免费下载&…

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧

2026/7/15 0:26:43

openEuler系统集成测试实战:基于smoke-test套件的环境验证技巧 【免费下载链接】integration-test The repo contains test suits for system integration test 项目地址: https://gitcode.com/openeuler/integration-test 前往项目官网免费下载:…

【LINUX】驱动

【LINUX】驱动

2026/7/15 0:08:14

【LINUX驱动】【字符设备】【中断】【Platform】【网课 设备树】【GPIO】【PINCTRL】【INPUT】【IIC】【SPI】【网络驱动】【屏幕驱动】【一 设备树】【二 内核模块编译】【三 基本驱动框架】【四 Platform总线设备驱动框架】【五 驱动子系统】【六 综合】

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

【1982-2026】全国高精度建筑轮廓|村级精度|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1982-2026年全国村级精度建筑轮廓矢量数据,覆盖全国各省市区县,到村级别精细,为2026年最新实时采集成果,非网传仅60/77个城市的老旧数据。 数据含带高度/不带高度双版本,单体建筑边界精…

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

【1975-2026】全国水系水路数据|河流/水库/运河|SHP矢量

2026/7/15 0:08:14

🔍 数据简介 本次分享1975-2026年全国高精度水系水路矢量数据,覆盖全国全域,包含河流、水系、水库、运河、湿地、冰川、沟渠等全类别水文要素。 数据集包含双层矢量图层,字段分类清晰、要素齐全,支持2013-2026逐年完整…