Simulink 模型生成 C 代码(一):使用 Embedded Coder 快速向导生成代码

以matlab自带的示例模型RollAxisAutopilot为例进行讲解。RollAxisAutopilot为飞机自动驾驶控制系统模型。

使用快速向导工具生成代码

  1. 通过键入以下命令打开模型 RollAxisAutopilot
openExample('RollAxisAutopilot');

  1. 如果 C 代码选项卡尚未打开,请在 App 库中的代码生成下,点击 Embedded Coder
  2. 在 C 代码选项卡上,点击快速向导
  3. 逐步执行快速向导工具的各个步骤,在生成代码步骤停止。每个步骤都会询问有关您要生成的代码的问题。对于本教程,请使用已选择的默认值。该工具根据模型验证您的选择,并显示生成代码所需的参数更改。
  4. 生成代码步骤中,点击下一步应用建议的更改并从 RollAxisAutopilot 生成代码。
  5. 点击完成,然后返回 C 代码选项卡。在该选项卡中,您可以配置代码生成自定义,然后在模型旁边的代码视图中检查结果。

检查生成的代码

生成的代码出现在两个主文件中:RollAxisAutopilot.c 和 RollAxisAutopilot.h。在您的 MATLAB® 当前文件夹中,RollAxisAutopilot_ert_rtw 文件夹包含这些主文件。

在您的当前文件夹中,代码生成器会创建 slprj 文件夹。此文件夹包含 rtwtypes.h 文件,该文件定义生成的代码默认使用的标准数据类型。通常,此同级文件夹包含可以或必须在多个模型之间共享的生成文件。

您从模型中生成的代码包含从应用程序代码调用的入口函数。对于基于速率的模型,这些函数包括初始化函数、执行函数以及可选的终止和重置函数。这些函数通过您控制的数据接口与应用程序代码交换数据。

点击模型图下方的代码映射 - 组件接口打开代码映射编辑器。在函数选项卡上,您可以看到代码生成器生成的各个入口函数。您可以从外部代码或您修改的生成主函数的版本调用这些生成的函数。对于基于速率的模型的基本速率单步函数和导出函数模型的单步函数,您可以自定义函数名称和参数。

查看代码生成器为模型生成的入口函数的列表。使用此视图有选择地为每个函数指定一个函数自定义模板(代码定义)和名称。对于本教程,代码生成器使用自定义模板和入口函数名称的默认(附带)设置。代码生成器会为初始化函数 RollAxisAutopilot_initialize 和执行(单步)函数 RollAxisAutopilot_step 命名。这两个入口函数都有一个 void-void 接口(它们不传递任何参数)。这些函数通过共享数据结构体访问数据。此类数据的示例包括函数与应用程序代码交换的系统级输入和输出。

要在生成的代码中查看这些入口函数,请执行下列操作:

  1. 在 Simulink® 编辑器窗口右侧的“代码视图”窗格中,找到搜索栏。
  2. 在搜索栏中,键入 RollAxisAutopilot_step。要在生成的代码文件中查找单步函数名称的每个实例,请点击搜索建议。
  3. 使用右侧的箭头步进每个实例,包括 RollAxisAutopilot.c 中的单步函数定义和 RollAxisAutopilot.h 中的声明。您还可以通过左上角的文件菜单查看每个文件中的搜索命中数。
  4. 重复这些搜索步骤,以在生成的代码中找到初始化函数 RollAxisAutopilot_initialize

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】宏定义

严格来说,这个题目起名为C是不合适的,因为宏定义是C语言的遗留特性。CleanCode并不推荐C中使用宏定义。我当时还在公司做过宏定义为什么应该被取代的报告。但是适当使用宏定义对代码是有好处的。坏处也有一些。 无参宏定义 最常见的一种宏定义&#xf…

makefile总结

1,Makefile规则介绍 一个简单的 Makefile 描述规则组成: TARGET... : PREREQUISITES... COMMAND 注意: 每一个命令行必须以[Tab]字符开始, [Tab]字符告诉 make 此行是一个命令行。 make 按照命令完成相应的动作。这也是书写 Makefile 中容易产生,而且比较隐蔽的错…

油烟净化器:餐饮业健康环保的守护者

我最近分析了餐饮市场的油烟净化器等产品报告,解决了餐饮业厨房油腻的难题,更加方便了在餐饮业和商业场所有需求的小伙伴们。 在现代餐饮业,油烟净化器已经成为不可或缺的重要设备。它不仅是保障餐饮环境清洁的利器,更是守护健康…

新声创新20年:无线技术给助听器插上“娱乐”的翅膀

听力损失并非现代人的专利,古代人也会有听力损失。助听器距今发展已经有二百多年了,从当初单纯的声音放大器到如今的全数字时代助听器,助听器发生了翻天覆地的变化,现代助听器除了助听功能,还具有看电视,听…

【LeetCode】368. 最大整除子集

虽然这题挺难写的,但是仍然提醒了我:解题要注意方法。在明确分析当一条道路走不通的时候,就不要再犹豫了,就要果断的换方法,尝试用其它方法解决。否则一味的消耗时间,得不偿失。换方法的前提是明确的分析&a…

C++ 和C#的差别

首先把眼睛瞪大,然后憋住一口气,读下去: 1、CPP 就是C plus plus的缩写,中国大陆的程序员圈子中通常被读做"C加加",而西方的程序员通常读做"C plus plus",它是一种使用非常广泛的计算…

Maya崩溃闪退常见原因及解决方案

Autodesk Maya 是一款功能强大的 3D 计算机图形程序,被电影、游戏和建筑等各个领域的设计师广泛使用。然而,Maya 就像任何其他软件一样可能会发生崩溃问题。在前文中,小编给大家介绍了3ds Max使用V-Ray渲染时的崩溃闪退解决方案: …

Neo4j 图数据库 高级操作

Neo4j 图数据库 高级操作 文章目录 Neo4j 图数据库 高级操作1 批量添加节点、关系1.1 直接使用 UNWIND 批量创建关系1.2 使用 CSV 文件批量创建关系1.3 选择方法 2 索引2.1 创建单一属性索引2.2 创建组合属性索引2.3 创建全文索引2.4 列出所有索引2.5 删除索引2.6 注意事项 3 清…

后端之路第三站(Mybatis)——JDBC跟Mybatis、lombok

一、什么是JDBC JDBC就是sun公司研发的一套通过java来操控数据库的工具,对应不同的数据库系统有不同的JDBC,而他们统称【驱动】,这就是上一篇我们提到创建Mybatis项目时要引入的依赖、以及连接数据库四要素里的第一要素。 JDBC有自己一套原始…

SerialportToTCP② 全

效果补全(代码): namespace SerialportToTCP {public partial class Form1 : Form{IniHelper Ini;string[] botelvs new string[] { "1200", "4800", "9600", "13200" };public Form1(){Initializ…

Elasticsearch:Painless scripting 语言(一)

Painless 是一种高性能、安全的脚本语言,专为 Elasticsearch 设计。你可以使用 Painless 在 Elasticsearch 支持脚本的任何地方安全地编写内联和存储脚本。 Painless 提供众多功能,这些功能围绕以下核心原则: 安全性:确保集群的…

安卓gdb 建立链接

adbshell gdbserver :1234 testdcam --sensor 0 --workmode 0 --args preview-size1024x600,picture-size640x480, --time 10 adb forwardtcp:1234 tcp:1234 //设置adb的转发 ./prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-gdb out/tar…

近红外光谱脑功能成像(fNIRS):1.光学原理、变量选取与预处理

一、朗伯-比尔定律与修正的朗伯-比尔定律 朗伯-比尔定律 是一个描述光通过溶液时被吸收的规律。想象你有一杯有色液体,比如一杯红茶。当你用一束光照射这杯液体时,光的一部分会被液体吸收,导致透过液体的光变弱。朗伯-比尔定律告诉我们&#…

mmdetection3D指定版本安装指南

1. 下载指定版本号 选择指定版本号下载mmdetection3d的源码,如这里选择的是0.17.2版本 git clone https://github.com/open-mmlab/mmdetection3d.git -b v0.17.22. 安装 cd mmdetection3d安装依赖库 pip install -r requirment.txt编译安装 pip install -v e .…

redis主从复制哨兵模式集群管理

主从复制: 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。缺陷:故障恢复无法自动化;写操作无法负载均衡&…

软件测试与质量保证 | 云班课简答题库

目录 第14章 质量相关简答题 第15章 测试实际相关简答题 第16章 测试基本相关简答题 第14章 质量相关简答题 1. 简述基本的测量原则。 测量应该基于该应用领域正确的理论之上,并在测量的定义中确定测度的目标;每一个技术测量的定义应该具有一致性和客…

HbuilderX:安卓打包证书.keystore生成与使用

前置条件 已安装jdk或配置好jre环境。 .keystore生成 打开cmd,切换到目标路径,输入以下命令, keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore 输入密钥库口令(要记住), 然后输入一系列信息, …

ui.perfetto.dev sql 查询某个事件范围内,某个事件的耗时并降序排列

ui.perfetto.dev sql 查询某个事件范围内,某个事件的耗时并降序排列 1.打开https://ui.perfetto.dev 导入Chrome Trace Json文件2.ParallelMLP.forward下的RowParallelLinear.forward3.点击Query(SQL),在输入框中输入以下内容,按CtrlEnter,显示查询结果4.点击Show timeline,点击…

2024年07年01日 Redis数据类型以及使用场景

String Hash List Set Sorted Set String,用的最多,对象序列化成json然后存储 1.对象缓存,单值缓存 2.分布式锁 Hash,不怎么用到 1.可缓存经常需要修改值的对象,可单独对对象某个属性进行修改 HMSET user {userI…

Windows快速打开某个路径下的PowerShell

按住Shift右键打开: 在桌面或者文件夹页面中,按住右键,在弹出的右键菜单中选择“在终端中打开”或“在此处打开Powershell窗口“,就可打开windows PowerShell界面,且路径为桌面或打开的文件夹所在路径。