一种MCU系统的状态响应方法与流程

文档序号:13804686阅读:248来源:国知局

本发明属于状态机事件处理领域,具体涉及一种mcu系统的状态响应方法。



背景技术:

在mcu(包括dsp及soc)为核心组成的控制系统中,需要监控的事件一般要连接到mcu的输入输出端口(i/o端口)上,通过电平(低电平或高电平)来侦测事件的状态,根据事件的状态进行相关处理。对事件的状态的改变,也可依靠电平变化产生的下降沿或上升沿来侦测。此外,事件的状态也可通过mcu的通信接口接收知悉,进行事件的相关处理。在mcu的实际运行过程中,需要实时监测输入端端口接收到的事件状态,并作出及时的处理。

一般来说,mcu顺次处理列表中的工作任务,遇到事件的状态时,需要处理该事件状态后再进行下一任务处理,即先响应事件状态的高电平或是低电平。即,当mcu依次处理完事件的状态之前的其它任务后,会按顺序查询事件状态接入的i/o端口,检测当前事件的状态。如果是高电平,会按高电平的对应状况处理事件;如果是低电平,会按低电平的对应的状况处理事件。但是,这种只要涉及到事件状态就需要不断处理的方式,在不涉及其他设备通信的情况下,都会占用mcu太多的时间开销;如果涉及到与其它设备的通信,还会过多地占用总线资源,加重系统的负担,影响系统的工作效率。但是实际上,事件的状态只有两种特征,高电平或者低电平,只有事件发生改变时,才需要对事件进行相应的处理。现有技术中,由于mcu在事件状态没有发生变化的时候也需要对事件进行处理,会造成较大的mcu开销,也会占用其他系统资源。

注:mcu为微控制器(microcontrollerunit)的英文缩写;dsp为数字信号处理器(digitalsignalprocessing)的英文缩写;soc为片上系统(systemonchip)的英文缩写,soc类似于mcu,但比mcu复杂些。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种mcu系统的状态响应方法,以及能够执行上述步骤的存储器和终端。本发明技术方案的方法,针对现有技术中mcu系统需要不断响应事件状态、占用系统资源的情况,采用先事件状态是否改变,然后决定是否响应的方法,可以大大降低mcu的开销,还能降低系统占用资源。

为实现上述目的,按照本发明的一个方面,提供了一种mcu系统的事件状态响应方法,其特征在于,包括如下步骤:

以值随事件状态改变而改变的第一状态变量代表事件状态,以第二状态变量表示事件状态在mcu系统中的对应状态;

设置第一状态变量与第二状态变量之间的值对应关系作为mcu系统响应事件的响应规则,并在响应事件后改变第二状态变量值使其不满足上述响应规则;mcu系统不响应事件时保持该第二状态变量值不变;

mcu系统运行过程中,在该事件对应的第一状态变量值与第二状态变量值满足所述响应规则时,响应该事件;不满足所述响应规则时,mcu不响应该事件;以此方式实现mcu仅在事件状态发生改变时相应事件。

由于事件状态只有在发生改变的时候mcu对其进行响应才是有效的,那么只需要针对事件状态进行判断,确认事件是否发生了改变。本发明技术方案的方法,通过将事件以第一状态变量进行表示,同时以第二状态变量(也可以称其为辅助状态变量)在mcu系统中对其进行表示,进而设置第一状态变量和第二状态变量之间的响应规则。即,只有在第一状态变量和第二状态变量满足响应规则的条件下,mcu系统才会对事件状态进行响应,同时还需要修改第二状态变量值,使得第一状态变量和第二状态变量不满足响应规则;如果第一状态变量和第二状态变量不满足响应规则,那么mcu系统就不需要对事件进行处理,也就是无须响应。通过这种方式,事件状态变化时,mcu可以根据响应规则对其进行响应,而事件状态没有发生变化时,mcu系统无须对其进行响应,可以继续执行其他任务,从而可以减少mcu系统运行负担。

作为本发明技术方案的一个优选,响应规则为第一状态变量值与第二状态变量值相等。

作为本发明技术方案的一个优选,若第一状态变量值等于第二状态变量值,mcu系统根据辅助第二状态变量值进行响应,并更改辅助第二状态变量值使其与第一状态变量值不相等。

作为本发明技术方案的一个优选,响应规则为第一状态变量值与第二状态变量值不相等。

作为本发明技术方案的一个优选,若第一状态变量值不等于第二状态变量值,mcu系统根据辅助第二状态变量值进行响应,并更改第二状态变量值使其与第一状态变量值相等。

作为本发明技术方案的一个优选,第一状态变量值为0或1。

作为本发明技术方案的一个优选,第二状态变量值为0或1。

按照本发明的一个方面,提供了一种存储设备,其中存储有多条指令,所述指令适用于由处理器加在并执行:

以值随事件状态改变而改变的第一状态变量代表事件状态,以第二状态变量表示事件状态在mcu系统中的对应状态;

设置第一状态变量与第二状态变量之间的值对应关系作为mcu系统响应事件的响应规则,并在响应事件后改变第二状态变量值使其不满足上述响应规则;mcu系统不响应事件时保持该第二状态变量值不变;

mcu系统运行过程中,在该事件对应的第一状态变量值与第二状态变量值满足所述响应规则时,响应该事件;不满足所述响应规则时,mcu不响应该事件;以此方式实现mcu仅在事件状态发生改变时相应事件。

按照本发明的一个方面,提供了一种终端,包括处理器,适于实现各指令;以及存储设备,适于存储多条指令,所述指令适于由处理器加载并执行:

以值随事件状态改变而改变的第一状态变量代表事件状态,以第二状态变量表示事件状态在mcu系统中的对应状态;

设置第一状态变量与第二状态变量之间的值对应关系作为mcu系统响应事件的响应规则,并在响应事件后改变第二状态变量值使其不满足上述响应规则;mcu系统不响应事件时保持该第二状态变量值不变;

mcu系统运行过程中,在该事件对应的第一状态变量值与第二状态变量值满足所述响应规则时,响应该事件;不满足所述响应规则时,mcu不响应该事件;以此方式实现mcu仅在事件状态发生改变时相应事件。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

1)本发明技术方案的方法,通过设置状态变量和辅助状态变量,并将两个变量对应联系起来,以实现对事件状态是否发生改变的判断,通过这种判断,mcu系统可以只对事件发生改变的情况进行状态响应,执行相应的操作,从而提高了mcu系统的运行效率,大大节省了系统开销。

2)本发明技术方案的方法,mcu系统通过对事件状态进行预处理,只有事件状态发生改变才需要中断服务程序对其进行处理,使得mcu系统在与其他设备配合使用的时候,可以减少对总线资源的占用,降低系统负担,提高系统工作效率。

附图说明

图1是本发明技术方案的实施例的事件处理流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。下面结合具体实施方式对本发明进一步详细说明。

为了减轻mcu的负担,可以在mcu处理事件之前对其进行判断。即在mcu开机工作时对事件初始化处理一次,以后只在事件的状态发生改变时才处理。也就是说,在mcu接收到事件状态任务时,先判断事件状态是否发生改变,如果没有发生改变,则不进行处理,若事件状态发生了改变,则对其进行处理。即:如果事件的状态不发生改变,mcu就对事件不作任何处理;在要处理的事件较多的情况下,这种方法会极大地节省mcu的开销,提高mcu的工作效率。

本发明技术方案的实施例中,mcu在开始执行任务列表之前对事件状态进行一次处理,然后根据任务列表顺序进行处理。对位于任务列表中的事件状态,在接收到事件状态相关的任务时,先对事件状态进行判断,看事件是否发生改变,若改变则mcu系统对其进行处理。本发明技术方案的实施例中,为了实现对事件状态的变化与否的判断,引入了两个变量,一个是事件的状态变量,另一个是mcu系统中与事件状态对应的可以通过软件设置的辅助状态变量,本发明技术方案的实施例中通过这两个变量的变化关系来决定如何处理时间。其中,状态变量代表事件状态本身的客观状态,如果事件状态本身发生变化,则意味着状态变量发生变化;辅助状态变量是mcu系统中代表事件状态的参量,mcu系统根据外部事件状态的状态变量和系统内部的辅助状态参量之间的关系来判断事件状态是否发生了变化,从而确定是否需要进行事件处理。即建立状态变量与辅助状态变量之间的响应关系,作为mcu系统事件响应的判断依据。

本实施例中,优选将事件本身的状态变量用s进行表示,将软件设置的辅助变量用a进行表示,需要特别指出的是,本实施例中的s和a不视为对本发明技术方案的具体限制,其他可以对二者进行区分的字符亦可。进一步地,本发明技术方案的实施例中,优选设置状态变量与辅助状态变量相等作为响应关系。其中,状态变量的值优选设置为0和1;辅助状态变量的值优选设置为0和1。

在开始处理任务之前,mcu根据事件的初始状态,设置状态变量,本实施例中优选设置状态变量为s=1。需要指出的是,此处初始状态变量参数的赋值并不构成对本发明技术方案的限制,其他用以区分不同类别的初始状态的方式亦可。在另一个优选的实施例中,事件的初始状态也可以直接确定,如确定为0或1,无须由软件来赋值。本发明技术方案的实施例中,在设置好事件本身的初始状态变量后,相应的设置辅助状态变量a=1,该辅助状态变量与事件的状态变量s是一致的。

在上述设置的基础上,mcu开始执行任务处理。事件的状态穿插在任务列表中,mcu按照顺序依次进行处理。mcu首先对事件状态进行一次处理,修改辅助状态变量值为0,然后顺次执行列表中事件状态之前与状态变量s无关的任务,直至遇到事件状态相关任务。根据此时事件状态变量和辅助状态变量判断是否需要对对事件状态进行处理,并根据判断结果对事件进行响应或是不响应。而后继续处理事件状态之后与状态变量s无关的任务,直至遇到下一个事件状态。

其中,mcu在进行事件状态处理的时候,具体过程为:①mcu首先判断事件状态的状态变量s与辅助状态变量a之间的关系,即s=a或s≠a;②根据状态变量s与辅助状态变量a之间的关系,确定下一步操作。如果s=a,判断a值,若a=1,则执行a=1时对应的ea组对应的响应,同时置a=0;若a=0,则执行a=0时对应的eb组对应的响应,同时置a=1。如果s≠a,则继续顺次执行任务列表中与状态变量s无关的任务,直至遇到任务列表中下一个事件状态,重复上述过程。

也就是说,本发明技术方案的实施例中,优选在初始状态时,mcu系统将根据初始状态下事件状态的高电平或是低电平采取相应的措施,执行一定的命令。同时,优选设置状态变量s和辅助状态变量a的数值一致为响应条件。mcu系统开始执行任务,将检测到的状态变量和辅助状态变量进行比较,如果是一致的,则对该事件状态进行响应,并将辅助状态变量的值修改至与状态变量不一致。由于事件状态只有高电平或者低电平两种状态,状态变量s与辅助状态变量a之间的判断只有一致或者是不一致。本实施例中,优选设置初始状态的状态变量值为1或0,相应的初始状态的辅助状态变量值为1或0,状态变量值与辅助状态变量值在初始状态下一致。如,s=a=1时,经过一次状态变量s与辅助状态变量a的判断后,辅助状态变量a的值变为0,此时状态变量s与辅助状态变量a值不一致,mcu系统可以继续执行任务列表。在继续执行任务列表的过程中,对与事件状态有关的任务,判断状态变量s与辅助状态变量a是否一致,若s与a不一致,由于a没有发生改变,则s没有发生改变,事件状态没有发生变化,不需要对其进行响应;若s与a一致,由于a没有发生变化,则说明s发生了变化,即事件状态发生了改变,需要对其进行响应。在预先对s和a赋值的时候,相应确定了高电平和低电平状态下,mcu系统的软件响应程序,根据a的值,可以确定此时的事件状态,即事件状态的输入值是高电平还是低电平,从而进行相应的处理。

在本实施例中,作为一个优选,如果s由软件赋值,设备开机时,程序对s及a赋初值。如果s由硬件的状态决定,则可以不用软件来赋值,只须对a赋初值。在主循环程序中,如果s及a相等,可以根据a值的状态,处理不同的事件,并改变a的值,使s及a的值不相等,当程序循环运行到此处时,若s没有发生改变,s与a将不相等,相应的事件便不会被处理,即和事件处理有关的程序代码不会被执行。只有在s的状态再次发生改变后,s与a相等,相关的事件才会再被执行。

以下结合实施例对本发明作进一步说明。本发明的实施例,具体包括下述步骤:

(1)根据事件的初始状态,设置状态变量s=1,相应地置辅助状态变量a=1;

(2)顺序执行与状态变量s无关的任务(即处理该事件s前的程序段);

(3)如果s=a,则判断a的值,如果a=1,执行ea组事件,同时置a=0;如果a=0,执行eb组事件,同时置a=1。否则ea组事件及eb组事件都不会被执行。

(4)顺序执行mcu任务列表中与状态变量s无关的任务(即处理该事件s后的程序段);直至遇到任务列表中下一个事件状态,重复上述步骤(2)~(4)。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1