关注会变身的火娃,学编程思想不迷路(持续更新中~)
编程思想专栏目录(更多精彩):
编程思想专栏目录,带你探索编程的奥秘,涵盖各类编程技巧与实战案例。
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编写状态机的两种写法
状态机的实现可以采用事件驱动和状态驱动两种方式。事件驱动在状态中检查事件,状态驱动在事件中检查状态。尽管两者功能相同,但实际编写中应选择更简洁、易于维护的实现方式。
温馨提示:答案为网友推荐,仅供参考