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)来定义数据在所生成的代码里的表达方式。

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

    关注

    11

    文章

    2903

    浏览量

    79685
  • 变量
    +关注

    关注

    0

    文章

    615

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    常用变量介绍

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

    语法纠错和testbench的自动生成

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

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

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

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

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

    cunbemx生成RTthread代码疑似漏复制文件怎么解决?

    使用6.12.x版本cubemx,勾选X-CUBE-RT-Thread,生成代码。最后的代码缺失libcpu文件夹,工程也缺失对应的文件
    发表于 03-13 08:23

    DLP3010EVM在生成新的firmware时不能取消勾选 “Skip changing user defined looks”怎么解决?

    板卡:DLP3010EVM 软件:DLP3010LC 2.1.0.7 在生成新的firmware 时不能取消勾选 “Skip changing user defined looks”,如下图,
    发表于 03-03 07:04

    DLP660TE在生成4k画面时,抖动频率是否可以自行设定?

    我想咨询一下DLP660TE在生成4k画面时,抖动频率是否可以自行设定,抖动的两幅图是否可以客户指定?
    发表于 02-17 07:20

    STM32CubeMX生成代码,是怎样的HAL架构?

    需要注意,CubeMX只是一个初始化工具,它只是帮你完成了HAL库外设和时钟的初始化,具体程序的编写还需要查阅HAL库的说明,使用相关函数实现你想实现的功能。CubeMX生成代码包含了丰富的注释
    的头像 发表于 01-01 21:01 1247次阅读
    STM32CubeMX<b class='flag-5'>生成</b>的<b class='flag-5'>代码</b>,是怎样的HAL架构?

    DFT在生物信号分析中的应用

    DFT(离散傅里叶变换)在生物信号分析中有着广泛的应用。生物信号,如心电图(ECG)、脑电图(EEG)、肌电图(EMG)等,是生物体内产生的电信号,它们携带着生命活动和生理状态的重要信息。DFT作为
    的头像 发表于 12-20 09:28 1561次阅读

    SRIO介绍及xilinx的vivado 2017.4中生成srio例程代码解释

    1. 概述 本文是用于记录srio的学习情况,以及一些对xilinx的vivado 2017.4中生成srio例程代码的解释。 2. 参考文件 《pg007_srio_gen2》 3. SRIO协议
    的头像 发表于 12-10 16:24 4485次阅读
    SRIO<b class='flag-5'>介绍</b>及xilinx的vivado 2017.4中<b class='flag-5'>生成</b>srio例程<b class='flag-5'>代码</b>解释