欧洲杯体育也便是对上电事件的反映-开云「中国」kaiyun体育网址登录入口

发布日期:2025-07-17 13:40    点击次数:89

本文来说一下景况机编程。

什么是景况机?

景况机(state machine)有5个因素:

景况(state)移动(transition)事件(event)动作(action)条目(guard)

景况:一个系统在某一时刻所存在的沉静的职责情况,系统在通盘职责周期中可能有多个景况。举例一部电动机共有正转、回转、停转这 3 种景况。

一个景况机需要在景况逼近中录取一个景况当作启动景况。

移动:系统从一个景况转机到另一个景况的历程称作移动,移动不是自动发生的,需要外界对系统施加影响。停转的电动机我方不会转起来,让它转起来必须上电。

事件:某一时刻发生的对系统特殊想的事情,景况机之是以发生景况移动,便是因为出现了事件。对电动机来讲,加正电压、加负电压、断电便是事件。

动作:在景况机的移动历程中,景况契机作念出一些其它的行为,这些行为便是动作,动作是景况机对事件的反映。给停转的电动机加正电压,电动机由停转景况移动到正转景况,同期会启动电机,这个启动历程不错看作念是动作,也便是对上电事件的反映。

条目:景况机对事件并不是来者不拒的,有了事件,景况机还要自负一定的条目身手发生景况移动。还是以停转景况的电动机为例,诚然合闸上电了,关联词若是供电透露有问题的话,电动机还是不可转起来。

举个例子

要贬责的问题

电路如下图:

器件包括单片机MCU、一按键K0、LED灯L1和L2。

结束功能描摹:

L1L2景况颐养轨则OFF/OFF--->ON/OFF--->ON/ON--->OFF/ON--->OFF/OFF通过按键适度L1L2的景况,每次景况颐养需辘集按键5次L1L2的启动景况OFF/OFF

景况颐养图

在景况机编程中,正确的轨则应该是先有景况颐养图,后有关节,关节应该是凭据缱绻好的景况图写出来的。

底下这张按键适度活水灯景况颐养图,是用UML(长入建模话语)的语法元素画出来的,语法不是很圭臬,但拿来阐发注解问题满盈了。

上图中,圆角矩形代表景况机的各个景况,内部标注着景况的称呼。

带箭头的直线或曲线代表景况移动,起于初态,止于次态。

图中的翰墨推行是对移动的阐发,面目是:事件[条目]/动作列表(后两项可选)。

“事件[条目]/动作列表”要阐发的敬爱是:若是在某个景况下发生了“事件”,何况景况机

自负“[条目]”,那么就要实践这次景况转机,同期要产生一系列“动作”,以反映事件。在这个例子里,我用“KEY”暗示击键事件。

图中有一个玄色实心圆点,暗示景况机在职责之前所处的一种不可知的景况,在运行之前景况机必须强制地由这个景况移动到启动景况,这个移动不错有动作列表(如图1所示),但不需要事件触发。

图中还有一个包含玄色实心圆点的圆圈,暗示景况机生命周期的末端,这个例子中的景况机生生继续,是以莫得景况指向该圆圈。

关节代码

底下是凭据上述景况颐养图写成的代码:

void main(void)

先看一下fsm_active()这个函数,g_stFSM.u8KeyCnt = 0;这个语句在switch—case里共出现了 5 次,前 4 次是当作各个景况移动的动作出现的。从代码简化莳植着力的角度来看,咱们澈底不错把这 5 次兼并为 1 次放在 switch—case 语句之前,两者的后果是澈底一样的,代码里之是以这么啰嗦,是为了显豁地标明每次景况移动中悉数的动作细节,这种样式和上头景况颐养图所要抒发的意图是澈底一致的。

再看一下g_stFSM这个景况机结构体变量,它有两个成员:u8LedStat和 u8KeyCnt。用这个结构体来作念景况机简略有点儿啰嗦,咱们能不可只用一个像 u8LedStat 这么的整型变量来作念景况机呢?

天然不错!咱们把上图中的这 4 个景况各自拆分红 5 个小景况,这么用 20 个景况通常能结束这个景况机,而且只需要一个 unsigned char 型的变量就满盈了,每次击键王人会激发景况移动, 每移动 5 次就能改变一次 LED 灯的景况,从外面看两种步骤的后果澈底一样。

假定我把功能要求改一下,把辘集击键5次改变L1L2的景况改为辘集击键100次身手改变L1L2的景况。这么的话第二种步骤需要4X100=400个景况!而且函数fsm_active()中的switch—case语句里要有400个case,这么的关节还有法儿写么?!

通常的功能改革,若是用g_stFSM这个结构体来结束景况机的话,函数fsm_active()只需要将if(g_stFSM.u8KeyCnt>3)改为if(g_stFSM.u8KeyCnt > 98)就不错了!

g_stFSM结构体的两个成员中,u8LedStat不错看作是质变因子,畸形于主变量;u8KeyCnt不错看作是量变因子,畸形于接济变量。量变因子的逐步积贮会激发质变因子的变化。

像g_stFSM这么的景况机被称作Extended State Machine欧洲杯体育。