准备:安装matlab,以2015b为例
一、启动stateflow
打开matlab,命令行中输入sfnew,回车
二、点击如下,可以选择想使用的控件,拖拽到工作界面即可
三、进入chart,右键可以添加输入、输出、局部变量等,注意下面的线上也命名
四、更新输入port的属性,以及信号线的属性,选择响应的类型即可
输入线的属性选择imported,这样生成代码提供声明
输出线的属性选择exported,这样生成代码提供定义
输出port不用变化,auto就行
五、对chart的工作环境进行设置,进入chart,右键如下图标:选择properties,进行如下设置
六、可以进行适当的逻辑设置,[]表示条件,{}表示结果,多个条件换行用…
满足条件就执行响应的下面的{}内容,1和2表示先判断哪个
右侧表示可以选择的控件
七、可以嵌套chart,如下
下面1,2,3表示4个条件可以由Idle跳到Deal,也有1,2两个条件从Deal跳到Idle。
说明:
1、after(10,tick)表示延迟10个周期(周期一般是MCU设定的,10ms任务、2ms任务等)
2、hasChangedTo(speedIn,200)表示speedIn变成200
3、hasChangedFrom(speedIn,200)表示speedIn上个值是200
4、A表示默认状态(必加,给程序一个初始状态)
Idle中的en、du、ex说明:
en:表示第一次进入Idle执行
du:表示在Idle状态中每个周期执行一次,deal图中的连接到框上含义相同
ex:表示退出Idle状态执行一次
八、生成代码设置
九、生成代码,点击如下,如没错误,即可生成代码
十、代码解析
下面speedOut为定义,函数LEDTest_step就可以放在10ms任务等,周期调用。
speedIn会在LEDTest.h中定义声明