编程思想之状态机详解以STM32为例

1 STM32状态机编程---什么是状态机?万事万物都有其状态。状态机是一种编程思路,用于抽象描述现实事物运行规则。通过状态机,可以清晰表达对象在不同条件下的行为模式。1.1 什么是状态 状态是事物在不同阶段的表现形态。比如,一个灯泡的状态可以是打开或关闭,一个人的状态可以是健康、感冒或康复中。
编程思想之状态机详解以STM32为例
关注会变身的火娃,学编程思想不迷路(持续更新中~)

编程思想专栏目录(更多精彩):

编程思想专栏目录,带你探索编程的奥秘,涵盖各类编程技巧与实战案例。

1 STM32状态机编程----什么是状态机?

万事万物都有其状态。状态机是一种编程思路,用于抽象描述现实事物运行规则。通过状态机,可以清晰表达对象在不同条件下的行为模式。

1.1 什么是状态

状态是事物在不同阶段的表现形态。比如,一个灯泡的状态可以是打开或关闭,一个人的状态可以是健康、感冒或康复中。状态机通过描述对象的各个状态及其转换,实现对复杂逻辑的简化。

1.2 状态机要素

状态机由现态、条件、动作和次态四个要素组成。现态和条件触发动作,动作改变现态。比如,健康状态的条件是吃药,吃药后状态转换为康复中。

1.3 有限状态机

有限状态机是状态机的一种,特点是状态有限且可数。状态机通过定义状态集合、事件和动作,描述系统在不同状态下的行为逻辑。

1.4 状态迁移图(STD)

状态迁移图是状态机的可视化表示,用节点表示状态,连线表示状态间的转换。通过状态迁移图,可以直观理解状态机的工作流程。

1.5 STM32中的状态机

STM32处理器在按键处理中使用状态机简化程序逻辑。状态机通过定义事件、状态和动作,实现按键状态的自动化处理。引入状态机思维,能有效简化程序设计。

1.5.1 if else语句结构状态机

使用if else结构的状态机在多条件判断时效率低下,浪费CPU资源。相比之下,switch case结构更清晰,但实际运行效率并未显著提高。

1.5.2 switch case结构状态机

switch case结构通过事件和状态映射简化状态转换逻辑,使程序结构更加清晰。虽然实际运行效率没有明显提升,但代码可读性增强。

1.5.2.1 再说一下使用Switch编写状态机的两种写法

状态机的实现可以采用事件驱动和状态驱动两种方式。事件驱动在状态中检查事件,状态驱动在事件中检查状态。尽管两者功能相同,但实际编写中应选择更简洁、易于维护的实现方式。2024-10-24
mengvlog 阅读 29 次 更新于 2025-08-09 06:51:29 我来答关注问题0
  •  武汉誉祥科技 UML状态图详解

    初始状态以实心圆形表示,最终状态以圆圈内嵌实心圆点呈现,选择状态则用带监护条件的菱形标识。一般状态:圆角矩形标记,包含状态名称、入口/出口动作、内部转换,以及事件/动作表达式,是状态的基本构造。复合状态:包含子状态的高级状态,通过组合子状态来描述更复杂的动态流程,如洗衣机的“工作中”状态。3...

  •  文暄生活科普 使用Simulink学习STM32-(3)按键控制LED亮灭

    在使用Simulink进行STM32的按键控制LED亮灭实验时,我们构建的环境包括Matlab 2021b版本,Windows 10专业版操作系统,以及YF-STM32-ALPHA 1R4硬件平台。实验核心模型如图所示,当按键被按下时,会触发一个下降沿脉冲,通过计数器模型"Count Up",计数从0到1,计数满后切换LED状态,0对应熄灭,1对应点亮。

檬味博客在线解答立即免费咨询

编程相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部