我是靠谱客的博主 积极茉莉,最近开发中收集的这篇文章主要介绍2837xd 代码生成——StateFlow(4),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2837xd 代码生成——StateFlow(4)

    • 16 Chart调试
      • 16.1 设置断点类型:
      • 16.2 断点管理:
    • 17 Watch Data
    • 18 调用Work Space变量
    • 19 StateFlow 调用c代码
    • 20 2837d使用Chart进行构建模型搭建实例

16 Chart调试

  在Animation中可以进行设置调试过程的转移速度。

在这里插入图片描述

16.1 设置断点类型:

1)chart只能打上进入时的断点:

在这里插入图片描述

打上断点后,左下角会有相应的标识。

在这里插入图片描述

2)State打断点,有三种类型:I、进入State   II、State中   III、退出State

在这里插入图片描述

打上断点后,State2左下角会出现相应的标识,点击能够看到断点类型:

在这里插入图片描述

3)同样的操作,转移也可以打入断点:

在这里插入图片描述

4)在Model Explorer中可以为事件打上断点:

在这里插入图片描述

16.2 断点管理:

  点击任意一个断点,在出现的对话框中点击Breakpoints List进入断点管理。这个断点管理是不局限于某个模型的,若你打开了多个模型,则多个模型的断点都会在断点管理上显示。

在这里插入图片描述

  断点管理界面如上,这里使用的官方例程(Command Window输入sf_car即可进入)。断点管理的界面上Condition含义是:当满足条件时,断点才会生效。这跟在C中打断点一样,我们有时候会希望在循环时,第多少次循环进入断点。Hits是记录进入断点的次数。
断点可以较快的定位Chart的错误之处。

17 Watch Data

在信号线上,右键可以选择加入Watch Data Window:

在这里插入图片描述

选择完毕之后,会弹出Watch Data Window的窗口。后面的DEBUG即可。

18 调用Work Space变量

调用的基本语言格式是

y=ml.x;          //x需要在Work Space中已经进行定义;

注意:需要将chart的动作语言设置成为 C语言动作(Matlab语言不行)

在这里插入图片描述

其他操作同常规进行:

在这里插入图片描述

这里可以快速定义模型的回调函数,进行定义,免除手动定义(回调函数具体内容请自行查阅Simulink说明):

在这里插入图片描述

在这里插入图片描述

ml语句也可以进行重载:

y=ml('sin(%f)',u);             //u是Work Space的变量,这里的sin函数可以替换成任何Matlab的内建函数
y=ml.my_sin(u);                //my_sin是自己编写的matlb函数文件

在这里插入图片描述

19 StateFlow 调用c代码

分别编写好.c和.h文件放置在同一目录下:

在这里插入图片描述

然后进入 Configuration Parameters中进行相关的设置:

在这里插入图片描述

在这里插入图片描述

然后在Chart中进行调用即可。这里因为引入的是C语言文件,所以动作语言必须选择C语言。

20 2837d使用Chart进行构建模型搭建实例

这里搭建一个实时的计时器模块,其分为初始化模块和XINT模块和计数器模块。

在这里插入图片描述

1)变量这里使用的是Data Store Memory模块,在属性里面可以设置变量的类型

在这里插入图片描述

2)初始化模块。初始化KEY作为外部中断使用,本来想用LED灯指示初始化过程,但是失败了。原因是:生成的代码将GPIO的两条指令放置在了step函数进行运行。现在想到的是,直接在初始化模块里面加入点亮和熄灭的函数。因为初始化模块加入的代码总是放置在初始化函数的最后面。打个比方:如果生成的代码使用到了GPIO0作为I/O使用,那么一定会在初始化模块中进行初始化。在初始化代码里面可以直接使用位操作给GPIO端口赋值就可以操作。但是后面的步长注意一定要使用到GPIO0。(这样才能保证被初始化)。

在这里插入图片描述

3)外部中断函数模块,这里两个中断函数功能一致。都是在中断函数中,将(0-1循环)的数值存入变量(XINT1、XINT2)中。如果上一次执行XINT函数,存储的是0,那么下一次执行就会存储1.这样就产生了一个脉冲的上升沿。对应的可以产生下降沿。这个边沿信号就可以作为Chart的事件。

在这里插入图片描述

在这里插入图片描述

4)Chart模块实现了计数的功能,可以由XINT1、XINT2分别启动和复位计数。这里的TIC事件是一个随着步长产生0、1序列,如果步长设置为0.01,那么当执行100次TIC事件。可以认为经过了1秒。经过60s就将min指定为+1。注意因为ccs使用c代码驱动,所以这里的chart动作语言必须选用c语言。

在这里插入图片描述
在这里插入图片描述

5)实验结果。这里直接开启SCI_A进入仿真模式,然后按下按键进入Running:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

最后

以上就是积极茉莉为你收集整理的2837xd 代码生成——StateFlow(4)的全部内容,希望文章能够帮你解决2837xd 代码生成——StateFlow(4)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部