一个simulink模型能够生成代码首先要满足的条件:

 1:确保模型仿真的正确性2:将需要的输入和输出改成input和output模块3:离散化模型,设置求解器为离散,固定步长

满足上面条件后,接下来怎么生成嵌入式C代码呢?

一 : 嵌入式C代码生成

1:将系统目标文件(system target file)设置成 ert. tlc( Embedded Coder ) 如下图:

2:硬件实现规定(Hardware Implenmatation) 假如生成的代码用到的硬件平台是stm32,则可以如下设置:

完成上面的两步操作后,就可以用快捷键ctrl+B生成嵌入式C代码了。但是会发现生成的代码可读性很差所以下面来看怎么优化自动生成的C代码。

二 : 嵌入式C代码生成优化

1:首先我们可以看到 Code Generation 下拉菜单的 Optimization选项:

  当模型中使用参数变量,如Gain模块的增益值,在生成代码时,如果希望使用该参数的值直接展现到代码中,就需要设置参数内联选项,如下图所示框中选项:

2: 移除数据变量初始化为0。如下图设置:

3:设置当代码生成后以报告的形式自动打开

4:设置注释是否展现到代码中,推荐启动注释选项并勾选 Simulink block Stateflow object comments 选项以生成注释,注释中带有可以从代码跳转到对应模型的超链接,方便追溯模块与代码的对应关系。

5:通过设置各种标示符的不同组合,规定生成代码中各部分变量、常量、函数名、结构体及对象名称的生成规则。不建议修改,如图:

这些标示符的具体意义如下表所列:

6:用于添加模型中用到的用户自定义的源文件、头文件等。

7:C代码中移除real-time模型的结构体数据的错误状态,如图:

8:设置生成C文件的组织方式,对应的生成文件个数不同 ,具体如下表所列:

为了简洁,一般设置如下,

9:生成的C代码中数据类型名的重定义如下:

**注意:用户填入的自定义类型名不仅是一个别名字符串,还必须在Base Workspace或者数据字典中定义其作为Simulink .AliasType类型对象才可以。**如下:

转载:https://blog.csdn.net/weixin_38451800/article/details/87986280

Simulink自动代码生成(一)相关推荐

  1. 一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b)

    一文弄通STM32F103基于simulink自动代码生成CAN/USART/GPIO/TIM(stm32cubemx+stm32target+matlab2018b) 写在前面 1.stm32cub ...

  2. Simulink自动代码生成:生成代码的基本设置

      Simulink自动代码生成也被称作基于模型开发(BMD),相比于传统的手写代码方式能够尽量减少人为错误.模型本身可以用于仿真,单元测试等,更便于提前发现逻辑错误.同时只要约定好模型接口,就可以多 ...

  3. Simulink自动代码生成

    Simulink学习笔记(二)--Simulink自动代码生成(一) Simulink学习笔记(三)--Simulink自动代码生成(二)

  4. Simulink自动代码生成:数据字典的建立及代码优化

      在上一节<Simulink自动代码生成:生成代码的基本设置>的基础上,我们来对模型进行优化,使得生成的代码更能满足实际的需求,没看过我上一篇文章的可以点开如下链接:   Simulin ...

  5. Matlab/Simulink 自动代码生成 基于模型设计学习教程(1)---- 环境配置

    在接触不断开发深入STM32的时候,我经常在直接用C语言编写一个很发杂的算法,比如PID控制,傅里叶变换,卡尔曼滤波之类的基本需要的算法,然而对于一个初学者来说,编写这样的算法,费时费劲,甚至不一定能 ...

  6. Simulink自动代码生成3——优化生成的代码(optimizing generated code)

    代码优化综述 使用simulink代码生成之后,如果需要进一步对执行效率或者内存优化,可以看下面提到的方法.具体可从以下几个方面考虑: remove initialization code remov ...

  7. Simulink自动代码生成:原子子系统(Atomic Subsystem)

      在前两节的基础上我们继续来学习代码的优化,没看过我前两篇文章的可以先去看一下,否则可能觉得模型出现的很突兀.这一节我们来学习原子子系统,废话不多说,我们直接开始学习,看完了这一篇你就会明白什么是原 ...

  8. Matlab/Simulink 自动代码生成详细步骤

    最近一直在忙于FCU控制器的模型搭建,空闲之余也想分享一下自己对Simulink建模过程中的一些想法,从接触simulink到应用simulink大约已经两年多了,随着接触时间,慢慢发现simulin ...

  9. Simulink 自动代码生成原理

    如下图,Simulink模型会先变成一个文本式的 .rtw 模型描述文件,然后再变成 .c,.h,最后编译为最终目标文件. 典型的 Simulink 用户通常都是,用Simulink设计好算法后,做到 ...

最新文章

  1. 前端笔记(4)css,复合选择器,标签的显示模式,行高,css背景,css三大特性
  2. 算法提高课-搜索-最小步数模型-AcWing 1107. 魔板:bfs、复杂、八数码类似的题目
  3. 跟我一起学Redis之高可用从主从复制开始
  4. php声波模拟开门,关于 php使用扩展控制树莓派io 驱动超声波测距
  5. 同一台服务器上部署多个Tomcat的配置修改方法
  6. prometheus-operator架构部署( prometheus-server, pushgateway, grafana, alertmanater,servicemonitor...)
  7. C++--第20课 - 函数模板
  8. 全新SQL Server教程
  9. 汉字转换成拼音、获取拼音转换
  10. Microsoft .NET Framework 4 安装 1603错误的解决
  11. Tensorflow基础学习:自动求导函数tape.gradient
  12. 再谈量子计算与通讯的基本原理
  13. mac移除下载镜像的quarantine
  14. 深度卷积神经网络架构:从基本组件到结构创新
  15. HPS SoC和FPGA联合使用例程
  16. java event sourcing_深入浅出Event Sourcing和CQRS
  17. 4.19 使用QT做上位机与下位机通讯
  18. matlab模糊自适应pid控制仿真程序,模糊自适应整定PID控制matlab仿真程序(刘金锟-先进PID控制及其MATLAB仿真)...
  19. Python 求解方程
  20. matlab程序窗口是乱码,解决matlab中文乱码

热门文章

  1. RGBA 与 opacity不得不说的故事
  2. OpenGL之鼠标控制坐标系旋转、缩放、移动
  3. 三菱FX5U、Q系列、L系列PLC与SQL数据库双向通讯,对接MES
  4. Detour使用说明
  5. 从零开始学DSP的一些感受
  6. 关于苹果MAC电脑录屏同时录制声音的问题做个简单的说明(包括Soundflower,blackhole,Background Music)
  7. mysql数据库应用与开发姜桂洪 课后答案_数据库原理及应用(SQL Server 2012) 王丽艳版 课后习题第一至六章答案...
  8. backlog配置_redis的tcp-backlog配置
  9. tesla p100 linux,Ubuntu16.04深度学习开发环境配置(TeslaP100+cuda9.0+tensorflow)
  10. 以程序员的名义,分析 “人民的名义”