STM32-笔记15-状态机

1、什么是状态机?

        状态机(State Machine)是一种用于描述系统行为或功能行为的数学模型。它通常包含一组状态、一组转换条件以及动作执行。状态机通过在不同状态之间进行转换来模拟系统的行为每个状态都代表系统的一个特定配置或情况,而转换规则则定义了从一个状态转换到另一个状态的条件和动作。

        状态机广泛应用于多个领域,包括但不限于计算机科学、电子工程、通信、自动化和机器人技术等。在计算机科学中,状态机常用于描述软件系统的行为,特别是在硬件设计、编译器设计、网络协议以及用户界面交互等方面。

  • 状态机的主要特点包括:

        1. 有限状态:状态机通常具有有限数量的状态。这些状态可以是有序的、离散的或层次化的。

        2. 转换条件:状态之间的转换是基于特定条件触发的。当满足某个条件时,状态机会从当前状态转换到下 一个状态。

        3. 动作执行:在状态转换过程中,状态机可能会执行某些动作或操作。这些动作可以包括计算、数据更 新、输出信号等。

         4. 确定性和非确定性:状态机可以是确定性的(每个条件唯一对应一个转换)或非确定性的(一个条件可 能导致多个可能的转换)。

        状态机的实现方式多种多样,可以使用编程语言中的条件语句、循环结构或专门的状态机库来实现。此外, 硬件设计领域中的有限状态机(Finite State Machine, FSM)也是状态机的一种重要应用。

假设:针对学习,我们有两种状态:学习;不学习;

状态1:学习;我们在学习的时候可以写代码,改代码,查资料;

状态2:不学习;在不学习的时候可以刷视频,玩游戏,看小说;

代码:

while(1)//在while(1)中不断地循环
{
    if(state = 学习)
    {
        写代码();
        改代码();
        查资料();
        if(累了想休息)
        {
            state = 不学习;
        }
    } 
    if(state = 不学习)
    {
        刷视频();
        打游戏();
        看小说();
        if(想奋斗)
        {
            state = 学习;
        }
    }
}

2、在排队系统中状态机图

 

state = 不允许通行
while(1)//在while(1)中不断地循环
{
    if(state = 允许通行)
    {
        LED1以1秒频率闪烁();
        LED2不闪烁();
        蜂鸣器不响();
        开门();
        
    } 
    if(state = 不允许通行)
    {
        LED1不闪烁();
        LED2以200ms的频率闪烁();
        蜂鸣器响();
        关门();
        计时3秒();
        if(计时3秒后)
        {
            state = 允许通行;
        }
    }
    if(有五个人通过)
    {
        state = 不允许通行;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值