0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于如何控制变量在生成代码里的作用分析和介绍

MATLAB 来源:djl 作者:柚籽 2019-09-17 16:18 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在自动生成代码时,Simulink模型里的两类数据是我们需要考虑的:信号(signal)和参数(parameter)。信号对应于Simulink模块连线,仿真时一般都会变化;而参数则对应于双击模块时所设置的变量,仿真时一般保持不变。

如何控制这些变量在生成的代码里的实现?

点击末尾的 “阅读原文” 下载本文的案例模型

信号和参数的声明和定义

要得到:

模型参数p1定义为:int32 p1 = 3;extern int32 p1

模型信号mySig定义为:int16 mySig;extern int16 mySig

怎么做:用Data Object。

实例二

1. 建一个简单的Simulink模型

关于如何控制变量在生成代码里的作用分析和介绍

2. 代码生成基本配置

求解器:定步长—离散求解器

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在base workspace里定义参数数据对象p1,进行如图设置:

关于如何控制变量在生成代码里的作用分析和介绍

这样在生成代码的时候,参数p1就会定义为int32的数据类型,并且声明为extern。而且它的声明和定义代码会分别写入myHdr.h以及mySrc.c。

类似的,新建一个 Simulink.Signal,命名为 mySig,设置如图。它的定义和声明就会默认的在模型名.c和模型名.h里 :

关于如何控制变量在生成代码里的作用分析和介绍

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。

关于如何控制变量在生成代码里的作用分析和介绍

参数k不需要手动关联。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,得到参数p1的定义如图,写到自定义的.c.h文件里去了:

关于如何控制变量在生成代码里的作用分析和介绍

信号mySig的声明和定义如图,在模型名.c和模型名.h文件里:

关于如何控制变量在生成代码里的作用分析和介绍

E-Coder里对数据的默认定义:

关于如何控制变量在生成代码里的作用分析和介绍

总结

所以说,可以使用数据对象(Data Object)来定义数据在所生成的代码里的表达方式。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 信号
    +关注

    关注

    12

    文章

    2923

    浏览量

    80394
  • 变量
    +关注

    关注

    0

    文章

    616

    浏览量

    29566
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    能否详细介绍一下MOSFET在电机控制中的作用是什么?

    能否详细介绍一下MOSFET在电机控制中的作用
    发表于 12-22 13:11

    分析嵌入式软件代码的漏洞-代码注入

    这些变量中有一些是指针,那么这个平台甚至可以到达其他非堆栈地址。 真正对攻击者来说有价值的目标是让攻击者控制程序的执行部分。如果一个局部变量是一个函数指针,则攻击者可以通过该指针的后续调用来编写
    发表于 12-22 12:53

    如何搞定嵌入式 C语言中的全局变量问题?

    时序,起承转合。但是尽量不要用来传递参数,这个很忌讳的。 2、尽量把变量作用范围控制在使用它的模块里面,如果其他模块要访问,就开个读或写函数接口出来,严格控制访问范围。这一点,C++
    发表于 12-16 06:54

    第7章 变量进阶与点阵LED(7.1 7.2)

    走在马路上的时候,经常会看到马路两侧有一些LED点阵的广告牌,这些广告牌看起来绚烂夺目,非常吸引人,而且还会变化很多种不同的显示方式。本章就会学习到点阵LED的控制方式,同时也会学习C语言变量的进阶
    的头像 发表于 12-10 16:25 483次阅读

    常用变量介绍

    extern:用在全局变量上表示该变量在其他文件中已经定义;用在函数上作用同全局变量; static:用在全局变量上,和非静态全局
    发表于 11-21 07:05

    红文本生成算法通过国家网信办备案

    近日,国家互联网信息办公室发布了第十四批深度合成服务算法备案信息,北京万红科技有限公司(以下简称:万红)自主研发的“万红文本生成算法”正式通过备案。该算法致力于通过自动化的方式,
    的头像 发表于 11-14 09:06 798次阅读

    语法纠错和testbench的自动生成

    ,回到写好的Verilog代码,按住ctrl+shift+p,在弹出的搜索框输入testbench。 点击后会自动将当前模块的testbench生成在终端框内。 当然,本质上该插件还是通过python来实现的,因此
    发表于 10-27 07:07

    使用Simulink自动生成浮点运算HDL代码(Part 1)

    生成的HDL代码与目标无关。可以在任何通用FPGA或ASIC上部署该设计。 下面介绍如何在Simulink中创建单精度浮点乘法 直接使用乘法模块即可,并将输入口改为单精度浮点 使用Ctrl + g
    发表于 10-22 06:48

    STM32WB55使用cubemx生成代码编译报错怎么解决?

    使用cubemx生成代码有一处变量重复命名报错
    发表于 08-05 06:37

    NVIDIA recsys-examples在生成式推荐系统中的高效实践

    在生成式 AI 浪潮的推动下,推荐系统领域正经历深刻变革。传统的深度学习推荐模型 (DLRMs) 虽已展现出一定效果,但在捕捉用户兴趣偏好和动态行为序列变化时,常面临可扩展性挑战。生成式推荐系统 (Generative Recommenders, GRs) 的出现,为这一
    的头像 发表于 07-04 14:43 1294次阅读
    NVIDIA recsys-examples<b class='flag-5'>在生成</b>式推荐系统中的高效实践

    STM32IDE如何设定代码到ITCM中运行?

    近期使用STM32MUX生成STM32IDE的代码(MCU是STM32H743),目前希望可以将部分代码定位到ITCM中运行,加快处理速度,关于代码
    发表于 06-24 06:45

    STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?

    我是用STM32 touch 4.24.2 生成了一个 驱动STM32F469-disco的底层驱动,代码编译不过去?提示缺少文件,或者是打不开文件,但是我已经添加了文件?如下图所示: 大家有人遇到过类似的问题吗?这个touch gfx 软件
    发表于 06-09 06:46

    STM32 touch 4.24.2生成代码,但是keil编译不通过是怎么回事?

    我是用STM32 touch 4.24.2 生成了一个 驱动STM32F469-disco的底层驱动,代码编译不过去?提示缺少文件,或者是打不开文件,但是我已经添加了文件?如下图所示: 大家有人遇到过类似的问题吗?这个touch gfx 软件
    发表于 06-04 08:25

    STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?

    我是用STM32 touch 4.24.2 生成了一个 驱动STM32F469-disco的底层驱动,代码编译不过去?提示缺少文件,或者是打不开文件,但是我已经添加了文件?如下图所示: 大家有人遇到过类似的问题吗?这个touch gfx 软件
    发表于 04-29 07:31

    STM32 touch 4.24.2生成代码,但是keil编译不通过怎么解决?

    我是用STM32 touch 4.24.2 生成了一个 驱动STM32F469-disco的底层驱动,代码编译不过去?提示缺少文件,或者是打不开文件,但是我已经添加了文件?如下图所示: 大家有人遇到过类似的问题吗?这个touch gfx 软件
    发表于 04-27 06:34