当前位置:网站首页>2837xd 代码生成——补充(1)
2837xd 代码生成——补充(1)
2022-07-02 06:35:00 【Quikk】
2837xd 代码生成——补充(1)
1 代码生成补充
GPIODATA读取,需要利用Memory Copy模块:
在TI官方手册中,GPIO被分为A-F六组,每组对应关系分别如下:
端口 | 管脚 | 备注 |
---|---|---|
PortA | GPIO0 ---- GPIO31 | |
PortB | GPIO32---- GPIO63 | |
PortC | GPIO64 ---- GPIO95 | |
PortD | GPIO96 ---- GPIO127 | |
PortE | GPIO128 ---- GPIO159 | |
PortF | GPIO160 ---- GPIO168 |
因为在Simulink官方没有提供读取管脚DATA接口,又没有TI官方的结构体操作方式。所以只能采用访问寄存器的方式进行读取,例如要访问GPIO23的数据,先查看GPIO23属于PortA,所以应该访问GpioDataRegs.GPADAT.all寄存器。因此利用Memory Copy模块进行访问相应地址:
对于判断数据可以使用Bitwise模块进行运算。比如下图实现的就是检测GPIO23数据为0时,触发子模块。Bitwise的掩码代表着查看哪一位,如下图,代表关心第23位(GPIO23)。若第23位为零则输出0,若为1则输出0x800000。
2 Matlab-Coder代码生成
首先编写好一个m_functiong的代码:
然后进入Matlab Coder APP:
然后选择刚刚写好的m脚本文件:
直接点击Next:
然后定义输入端口(数据类型):
选择脚本进行测试生成MEX文件可以方便进行验证代码生成的效果:
进入更多设置:
设置为TIc2000系列的代码:
然后生成代码即可:
下面将生成的代码加入工程进行应用:
在上述的代码生成中,可以看到有mian文件。那是matlab给定的使用例子。可以按照上述的进行使用。进入生成代码目录,这里要主要h文件的包含,不行就先加入my_func的c文件和h文件。编译之后,提示缺啥就加入啥。
这里讲述一些文件包含关系,我生成的代码中,my_func.h需要头文件my_func_types.h与rtwtypes.h。rtwtypes.h里面存储了一些有关的宏定义文件。所以我在代码生成目录复制四个文件到工程中即可:
这里使用CodeBlocks进行验证能够运行:
结果符合m代码功能:
3 Simulink Function代码生成
因为计算机系统都是离散控制系统,所以必须使用离散模块进行代码生成,这里以一个简单的实例进行描述:
建立如下一个PI的离散模型,输入与输出用端口代替(生成代码里面就是将参数传递进来):
设置仿真步长和求解器方法:
对硬件进行相应的设置,这里不同的处理器,可能支持的操作位数不同:
对Code Generation选项卡进行相关设置,系统中安装了任意版本VS可以不勾选 Generate code only。没有安装必须勾选:
那个生成tlc文件的原理还没有弄很明白,类似脚本语言,调用资源进行编译什么的。所以暂时用官方提供的,有能力了再自己编写。
Report选项卡:
Comments选项卡都是一些与注释相关的内容,进行设置可以增加程序可读性(这里采用默认设置):
Code Placement选项卡选择Compact(紧凑型):
然后应用后,退出到Simulink界面(2019以下的版本在Interface中有个Configure Model Function进行相关设置),2019以上版本将此功能独立出来了(下面是2019版本设置过程):
1)进入Embeded Coder进行设置
2)点击左下角进行编辑函数生成,这里有三个函数初始化、步进运算、终止函数,主要设置step函数(另外两个自行设置):
3)step函数设置(设置完毕点击验证,验证成功后,Ctrl+B 生成代码即可):
4)在生成的代码中,可以看到step函数:
其名字,形参都是在Simulink中进行设置的参数。但是这里仅仅是函数的生成,还需要0.01秒调用一次即可使用。将相应的头文件和源文件加入工程即可调用函数:
4 模型的快速测试
Simulink工作空间与Workspace相互联系,所以在快速测试模型的时候,可以通过m脚本进行仿真。其主要过程如下:
clear;
clc;
step_size=0.01; //仿真步长设置
time=0.5; //仿真时间设置
t=[0:step_size:time]';
u(:,1)=[ones(2,1);zeros(length(t)-2,1)]; //给定数组,t为Simulink仿真时间点,u为输入
simout=sim(gcs,'SolverType','Fixed-step','Solver','ode3',...
'FixedStep',num2str(step_size),'Stoptime',num2str(time),...
'LoadExternalInput','on'); // 对Simulik的Configuration Parameters进行设置
stairs(simout.tout,simout.yout{
1}.Values.Data); //绘制结果图
可以看出脚本其实是实现了,开启外部输入功能的指令以及设置了步长运行时间等相关的参数:
但是脚本测试与实际测试最大的区别就是:他不会更改模型的任何设置。还能快速的给定不同输入和运行以及绘制结果。
当然这里只是简单的应用,具体simout函数的参数以及其他用法需要参照帮助文档。
边栏推荐
- 2837xd 代码生成——StateFlow(4)
- Beats (filebeat, metricbeat), kibana, logstack tutorial of elastic stack
- Redis 序列化 GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer的区别
- web安全与防御
- Fragmenttabhost implements the interface of housing loan calculator
- Alibaba / popular JSON parsing open source project fastjson2
- 逆变器simulink模型——处理器在环测试(PIL)
- 微服务实战|负载均衡组件及源码分析
- vs+qt 设置应用程序图标
- Mathematics in machine learning -- point estimation (I): basic knowledge
猜你喜欢
2837xd code generation - Summary
A detailed explanation takes you to reproduce the statistical learning method again -- Chapter 2, perceptron model
Idea view bytecode configuration
Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedd
Matplotlib swordsman line - layout guide and multi map implementation (Updated)
Learn combinelatest through a practical example
在SQL注入中,为什么union联合查询,id必须等于0
QT QLabel样式设置
2837xd 代碼生成——StateFlow(4)
hystrix 实现请求合并
随机推荐
互联网API接口幂等设计
C语言之判断直角三角形
Insight into cloud native | microservices and microservice architecture
C语言之最小数
2837xd 代码生成——总结篇
College Students' CET-4 and CET-6 composition template (self created version, successfully crossed CET-6)
Attributes of classfile
DTM distributed transaction manager PHP collaboration client V0.1 beta release!!!
分享一篇博客(水一篇博客)
Matplotlib swordsman line - layout guide and multi map implementation (Updated)
idea查看字节码配置
BugkuCTF-web16(备份是个好习惯)
Supplier selection and prequalification of Oracle project management system
JDBC review
个人经历&&博客现状
Pool de connexion redis personnalisé
CKEditor 4.10.1 上传图片提示“不正确的服务器响应” 问题解决
What are the differences between TP5 and laravel
三相逆变器离网控制——PR控制
BugkuCTF-web21(详细解题思路及步骤)