当前位置: 首页 > article >正文

嵌入式状态机(FSM)深度思考与架构实践

# 1. 前言在早期的嵌入式开发中我对状态机的理解仅停留在“使用 switch-case 进行条件跳转”没有去思考过状态机的本质是什么。今天重新整理了一下工程从整体来看布局又有新的不同看法与见解。状态机不仅仅是逻辑切换的工具更是实现“类并行”多任务处理、保障系统实时性的必要工具。# 2. 状态机的本质及功能状态机也和一般处理模型一样都需要数据输入然后对数据进行条件判断数据处理最后输出结果数据或执行某些功能。显然状态机是把一般数据处理模型进行拓展而已没有本质区别。系统在不同的状态间随时间或条件按需切换。 在主循环里面通过中断或者串口输入的命令解析获取各种状态的状态标志位进而判断出当前系统的运行状态进一步根据状态的改变判断下一步系统该去执行什么任务即把系统状态按需改变或复位。闭环控制系统输入 (Input)通过硬件中断定时器、外部按键或通信接口USART/Wi-Fi获取触发事件。处理 (Process)根据当前状态 (Current State) 和输入事件决定下一个状态 (Next State) 并执行相应的动作。输出 (Output)驱动外设GPIO、PWM、舵机产生实际物理变化。状态机让单片机从“被动响应中断”转变为“主动管理全局”能很好的解决复杂逻辑耦合。# 3. 状态机运行简图状态机在系统初始化完成之后便在主循环里一直无限循环。使用switchcase来做分步确保每次循环只在某个状态执行而不能停留阻塞其中工作状态需要使用定时器获得时间执行标记确保工作状态为主要状态确保状态切换为类并行运行不能影响系统功能执行。《—————————————————————————————————————————I状态一 ——》 状态二——》状态三...——》 错误态初始 《——————————I 在系统获取错误状态时需要复位(标志位更新切换状态)# 4. 状态机运行简图与生命周期系统初始化完成后状态机进入主循环 (while(1)) 无限运行。其流转逻辑如下​A[初始状态 INIT] -- B[空闲/工作状态 IDLE/TASK]B -- C{检测标志位/事件}C -- 条件满足 -- D[下一状态 NEXT_STATE]C -- 发生错误 -- E[错误态 ERROR]D --BE -- 复位/恢复 -- A# 5. 状态机关键设计原则1. 非阻塞性 (Non-blocking)每个‘case’ 分支内的代码必须“快进快出”严禁使用‘Delay()’ 等阻塞函数确保主循环能高频扫描所有状态。2. 时间片驱动利用定时器提供固定的时间基准如 1ms通过时间标志位在时间基准上进行时间计算进行明确时间标记点来触发状态流转实现精准的时序控制。3. 错误兜底必须设立‘ERROR’状态。当传感器异常或逻辑冲突时系统能立即切断动力并等待复位防止硬件损坏。4. 32位机下的状态机优势相比于8位机在32位机上实现状态机具有天然优势NVIC 嵌套中断高优先级的紧急任务如急停可以打断低优先级的状态处理保证系统的绝对安全。Static 局部变量利用 static 关键字将状态相关的计数器封装在函数内部既实现了“记忆”功能又避免了全局变量泛滥导致的命名污染。DMA 协同在“数据发送”等状态下启动 DMA 后即可立即切换状态CPU 无需等待传输完成极大提升了状态机的吞吐率。# 6. 总结状态机不是简单的代码技巧而是一种系统观。它将复杂的大工程拆解为一个个原子化的状态节点。只要把握好“输入触发、快速执行、标志位切换”这三个要素就能在资源有限的单片机上组成稳定可靠的逻辑系统。​

相关文章:

嵌入式状态机(FSM)深度思考与架构实践

# 1. 前言在早期的嵌入式开发中,我对状态机的理解仅停留在“使用 switch-case 进行条件跳转”,没有去思考过状态机的本质是什么。今天重新整理了一下工程,从整体来看布局,又有新的不同看法与见解。状态机不仅仅是逻辑切换的工具&a…...

研发公司一物一码如何打通产品研发与渠道数字化

研发公司一物一码如何打通产品研发与渠道数字化在快消行业,产品研发、渠道动销与消费者反馈原本应该形成闭环,但多数企业现实中仍是“研发看内部数据,销售看出货数据,市场看活动数据”。当产品从立项到铺市缺少统一的数据连接&…...

权威公布!AI时代剪辑学习秘籍,效率直接拉满!

我是深圳市好青春教育的技术老师,在AI时代,很多小伙伴对学习视频剪辑存在诸多疑问和困惑。比如,学习视频剪辑难不难?需要具备哪些基础?怎样才能快速掌握剪辑技术?进入这个行业有哪些途径?又该如…...

MindSpore 环境配置完全指南仆

前面我们对 Kafka 的整体架构和一些关键的概念有了一个基本的认知,本文主要介绍 Kafka 的一些配置参数。掌握这些参数的作用对我们的运维和调优工作还是非常有帮助的。 写在前面 Kafka 作为一个成熟的事件流平台,有非常多的配置参数。详细的参数列表可以…...

HTML 页面中精准控制 Chrome 翻译功能的实用技巧

1. 为什么需要控制Chrome翻译功能? 作为网页开发者,你可能遇到过这样的场景:用户使用Chrome浏览器的翻译功能时,页面上的品牌名称、专业术语或代码片段被错误翻译,导致内容失真。比如公司名称"Apple"被翻译成…...

OFA模型与Python集成实战:构建智能图片问答系统

OFA模型与Python集成实战:构建智能图片问答系统 用最简单的方式,让AI看懂你的图片并回答任何问题 1. 引言:当AI有了"眼睛"和"大脑" 想象一下这样的场景:你拍了一张街景照片,AI不仅能识别出图中的…...

MySQL超详细安装教程(保姆级)

1.官网下载mysql安装包 MySQL :: 下载MySQL社区服务器https://dev.mysql.com/downloads/mysql/ 2.下载完成后解压到一个文件夹 注意:不带中文 这个路径要记住,我们等下会用到 3.添加环境变量 环境变量里面有很多选项,这里我们只用到Path这…...

OpenClaw+Qwen3-14B科研助手:文献自动归档与摘要生成

OpenClawQwen3-14B科研助手:文献自动归档与摘要生成 1. 为什么需要自动化文献管理 去年写毕业论文时,我的Zotero里堆了487篇PDF文献。每天手动整理文献、标注关键词、写摘要要花2小时,最崩溃的是明明读过某篇文献,需要引用时却找…...

Android Camera开发避坑指南:HAL3与MediaCodec整合的那些坑

Android Camera开发避坑指南:HAL3与MediaCodec整合的那些坑 在移动设备的多媒体开发中,Camera HAL3与MediaCodec的整合堪称"地狱级"难度。我曾在一个旗舰机项目中,因为这两个模块的配合问题导致视频录制帧率从30fps暴跌到12fps&…...

OpenClaw隐私计算:Phi-3-mini-128k-instruct本地处理加密医疗笔记

OpenClaw隐私计算:Phi-3-mini-128k-instruct本地处理加密医疗笔记 1. 为什么需要本地化医疗数据处理 去年我参与了一个医疗数据分析项目,客户特别强调数据不能离开本地环境。他们需要处理大量患者就诊记录,但传统方式要么需要人工脱敏&…...

【2025 最新版】Hugging Face 下载命令全教程(hf download 替代旧版,亲测有效)

前言近期许多用户发现网上旧版的 Hugging Face 下载教程已完全失效! 旧命令 huggingface-cli download 频繁出现报错或无法执行,核心原因是 huggingface-hub 库已完成重大更新,官方统一采用 hf 作为新命令行入口,替代了老旧的 hug…...

DAMO-YOLO多尺度检测优化:小目标检测性能提升方案

DAMO-YOLO多尺度检测优化:小目标检测性能提升方案 无人机航拍场景下的小目标检测一直是计算机视觉领域的难点,DAMO-YOLO通过特征金字塔改进、anchor调整和智能数据增强等技术,为这一挑战提供了实用解决方案。 1. 小目标检测的挑战与DAMO-YOLO…...

PCA vs PCoA vs NMDS vs LDA vs t-SNE:5种降维方法的核心差异与应用场景解析

1. 降维方法的基本概念与核心价值 当你面对一个包含数百个特征的数据集时,就像站在一个装满各种调料的厨房里——每个瓶子看起来都很重要,但真正做菜时可能只需要其中几种。这就是降维技术的用武之地,它能帮我们从高维数据的"调料架&quo…...

GLM-4.1V-9B-Base实战案例:会议纪要截图→待办事项→中文结构化提取

GLM-4.1V-9B-Base实战案例:会议纪要截图→待办事项→中文结构化提取 1. 项目背景与需求 在日常工作中,我们经常需要处理各种会议纪要截图。这些图片通常包含大量文字信息,需要人工整理成结构化待办事项。传统方法需要手动输入或复制粘贴&am…...

Clawdbot+Qwen3:32B快速上手:免开发Web界面搭建私有ChatGPT

ClawdbotQwen3:32B快速上手:免开发Web界面搭建私有ChatGPT 1. 为什么选择这个方案? 你是否遇到过这些困扰: 想使用强大的Qwen3:32B大模型,但本地硬件资源不足希望拥有一个美观易用的Web界面,但不想从头开发需要确保…...

如何突破八大网盘限速:终极直链解析下载方案

如何突破八大网盘限速:终极直链解析下载方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘 / 迅…...

蓝桥杯双阶乘解答

题目:代码:import java.math.BigInteger;import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...BigInteger…...

APK安全加固公司怎么选?2026年技术实力与选型决策指南

作为移动端安全负责人,当你面对市场上众多APK安全加固服务商时,最头疼的往往不是找不到公司,而是如何从技术方案、成功案例、价格体系等多维度中,筛选出真正能防住破解、保障上架、并且符合合规要求的那一家。选错公司的代价不仅是…...

Hotkey Detective:三分钟定位Windows热键冲突的智能侦探

Hotkey Detective:三分钟定位Windows热键冲突的智能侦探 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 当你在…...

Rust 异步 ORM 新选择:Toasty 初探

Rust 异步 ORM 新选择:Toasty 初探 2026年4月,Rust 生态迎来了一款新异步 ORM 框架 Toasty。为什么它如此收到 Rust 开发者的广泛关注呢?因为它是来自于鼎鼎大名的 Tokio 团队,该团队研发的 tokio(异步运行时&#xf…...

Ollama一键部署【书生·浦语】internlm2-chat-1.8b:镜像免配置实操手册

Ollama一键部署【书生浦语】internlm2-chat-1.8b:镜像免配置实操手册 想体验一个轻量又好用的中文对话模型吗?今天给大家介绍一个超级简单的部署方法,让你在几分钟内就能用上【书生浦语】的 internlm2-chat-1.8b 模型。这个模型只有18亿参数…...

Adafruit MPR121电容触摸库深度解析与嵌入式集成指南

1. 项目概述Adafruit MPR121 是一款专为 Adafruit 官方 MPR121 电容式触摸传感器模块设计的 Arduino 兼容库,面向嵌入式硬件工程师与固件开发者提供稳定、可复用的底层驱动能力。该库并非通用型 MPR121 封装,而是深度适配 Adafruit 自研硬件(…...

Windows下OpenClaw避坑指南:Qwen3.5-9B镜像对接全记录

Windows下OpenClaw避坑指南:Qwen3.5-9B镜像对接全记录 1. 为什么选择WindowsOpenClaw组合 作为一个长期在Windows环境下工作的开发者,我一直在寻找能够提升本地自动化效率的工具。OpenClaw的出现让我眼前一亮——它不像那些需要复杂配置的企业级系统&a…...

Chord视频理解工具开源可部署:支持国产昇腾/寒武纪平台适配路线

Chord视频理解工具开源可部署:支持国产昇腾/寒武纪平台适配路线 1. 引言:让AI看懂视频,本地部署更安心 你有没有遇到过这样的场景?手头有一段视频,想快速知道里面发生了什么,或者想精准找出某个特定的人或…...

XUnity.AutoTranslator:Unity游戏翻译终极指南,5分钟实现游戏汉化

XUnity.AutoTranslator:Unity游戏翻译终极指南,5分钟实现游戏汉化 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator XUnity.AutoTranslator 是一款专为Unity游戏设计的实时翻译插件&…...

通义千问3-4B模型语义搜索优化:ES插件集成部署实战

通义千问3-4B模型语义搜索优化:ES插件集成部署实战 1. 引言:为什么需要语义搜索优化 传统的搜索引擎主要依赖关键词匹配,当你搜索"苹果"时,它可能返回水果苹果、苹果公司、甚至人名苹果的各种结果。而语义搜索能理解你…...

从Java转行大模型应用,Python + LangChain + 大模型 + Streamlit 生成简历与智能分析实战

这是一个开箱即用、完整可运行的实战项目,实现两大核心功能: AI 智能生成简历(基于个人信息自动生成专业简历)简历智能分析 可视化(评分、关键词匹配、优势 / 短板分析、图表展示) 技术栈: …...

别让AI代码,变成明天的技术债赋

如果有多个供应商,你也可以使用 [[CC-Switch]] 来可视化管理这些API key,以及claude code 的skills。 # 多平台安装指令 curl -fsSL https://claude.ai/install.sh | bash ## Claude Code 配置 GLM Coding Plan curl -O "https://cdn.bigmodel.cn/i…...

低空经济新蓝海:海事监测无人机技术全解析与应用展望

低空经济新蓝海:海事监测无人机技术全解析与应用展望 引言 大家好!随着“低空经济”被正式列为国家战略性新兴产业,无人机技术的应用版图正以前所未有的速度从我们熟悉的陆地,向更为广阔的海洋延伸。在这片“新蓝海”中&#xff0…...

网盘直链下载助手:八大主流网盘真实下载地址获取终极指南

网盘直链下载助手:八大主流网盘真实下载地址获取终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天…...