当前位置:网站首页>2837xd 代码生成——StateFlow(4)
2837xd 代码生成——StateFlow(4)
2022-07-02 06:35:00 【Quikk】
2837xd 代码生成——StateFlow(4)
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:
边栏推荐
- Knife4j 2. Solution to the problem of file control without selection when uploading x version files
- How to use pyqt5 to make a sensitive word detection tool
- Oracle modify database character set
- Read 30 minutes before going to bed every day_ day4_ Files
- 个人经历&&博客现状
- JVM instruction mnemonic
- 别找了,Chrome浏览器必装插件都在这了
- 图像识别-数据增广
- Who is better for Beijing software development? How to find someone to develop system software
- Required request body is missing: (cross domain problem)
猜你喜欢
Learn combinelatest through a practical example
西瓜书--第六章.支持向量机(SVM)
kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)
A detailed explanation takes you to reproduce the statistical learning method again -- Chapter 2, perceptron model
微服务实战|Eureka注册中心及集群搭建
Break the cocoon | one article explains what is the real cloud primordial
In depth analysis of how the JVM executes Hello World
hystrix 实现请求合并
Matplotlib swordsman line - first acquaintance with Matplotlib
Microservice practice | declarative service invocation openfeign practice
随机推荐
Chrome用户脚本管理器-Tampermonkey 油猴
kinect dk 获取CV::Mat格式的彩色RGB图像(openpose中使用)
Typeerror: X () got multiple values for argument 'y‘
Alibaba / popular JSON parsing open source project fastjson2
DTM distributed transaction manager PHP collaboration client V0.1 beta release!!!
c语言编程题
Statistical learning methods - Chapter 5, decision tree model and learning (Part 1)
图像识别-数据标注
Typora installation package sharing
Ora-12514 problem solving method
JDBC回顾
企业级SaaS CRM实现
Hystrix implements request consolidation
Matplotlib swordsman - a stylist who can draw without tools and code
C语言之数据插入
What are the differences between TP5 and laravel
How to use PHP spoole to implement millisecond scheduled tasks
Required request body is missing:(跨域问题)
Chrome浏览器标签管理插件–OneTab
View the port of the application published by was