Simulink代码生成(二)——代码生成时模型的配置方法及操作流程

Simulink代码生成(二)——代码生成时模型的配置方法及操作流程

一、模型

示例模型为简单选择模型。
在这里插入图片描述

二、代码生成设置

1、步长选择

由于要生成嵌入式代码下载到开发板中,而我们的开发板都是采用定步长工作的,所以生成代码时也要选择定步长。
在这里插入图片描述

2、系统目标文件设置

系统目标文件是指导代码生成过程的总括。系统目标文件可以规定生成代码的全局结构,以匹配所支持的目标芯片群及目标语言。
在这里插入图片描述
常用的系统目标文件有以下两个:

  • ert.tlc-针对嵌入式代码生成的系统目标文件。
  • grt.tlc-生成通用式实时目标的C代码。
    在这里插入图片描述
    一般采用erg.tlc或者根据erg.tlc针对某芯片的TSP(Target Support Package)。

3、生成代码打开测试报告

在这里插入图片描述
在这里插入图片描述

4、保存代码生成过程rtw文件

rtw 文件作为模型编译器的输人文件和编译过程的中间产物, 记录了模型创建信息和编译信息、名字与版本号、配置参数集、输人输出、参数等所有信息。可以通过以下选项保留这个中间文件。
在这里插入图片描述

5、代码解析

生成的文件有以下7个,最重要的是untitled.c,该文件生成代码的结构和S-function有点类似,有三个函数:

  1. void untitled_initialize(void) - 进行初始化
  2. void untitled_step(void) - 循环跑
  3. void untitled_terminate(void) - 结束时执行的动作,通常可以不需要

这个文件
在这里插入图片描述

/*
 * File: untitled.c
 *
 * Code generated for Simulink model 'untitled'.
 *
 * Model version                  : 1.3
 * Simulink Coder version         : 9.0 (R2018b) 24-May-2018
 * C/C++ source code generated on : Wed Oct 12 21:32:40 2022
 *
 * Target selection: ert.tlc
 * Embedded hardware selection: Intel->x86-64 (Windows64)
 * Code generation objectives: Unspecified
 * Validation result: Not run
 */

#include "untitled.h"
#include "untitled_private.h"

/* External inputs (root inport signals with default storage) */
ExtU_untitled_T untitled_U;

/* External outputs (root outports fed by signals with default storage) */
ExtY_untitled_T untitled_Y;

/* Real-time model */
RT_MODEL_untitled_T untitled_M_;
RT_MODEL_untitled_T *const untitled_M = &untitled_M_;

/* Model step function */
void untitled_step(void)
{
  /* Switch: '<Root>/Switch' incorporates:
   *  Inport: '<Root>/In1'
   */
  if (untitled_U.In1 > untitled_P.Switch_Threshold) {
    /* Outport: '<Root>/Out1' incorporates:
     *  Gain: '<Root>/Gain'
     */
    untitled_Y.Out1 = untitled_P.Gain_Gain * untitled_U.In1;
  } else {
    /* Outport: '<Root>/Out1' incorporates:
     *  Gain: '<Root>/Gain1'
     */
    untitled_Y.Out1 = untitled_P.Gain1_Gain * untitled_U.In1;
  }

  /* End of Switch: '<Root>/Switch' */
}

/* Model initialize function */
void untitled_initialize(void)
{
  /* Registration code */

  /* initialize error status */
  rtmSetErrorStatus(untitled_M, (NULL));

  /* external inputs */
  untitled_U.In1 = 0.0;

  /* external outputs */
  untitled_Y.Out1 = 0.0;
}

/* Model terminate function */
void untitled_terminate(void)
{
  /* (no terminate code required) */
}

/*
 * File trailer for generated code.
 *
 * [EOF]
 */

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值