VCU模型开发流程
第一部分单片机C底层代码开发需要一块你准备开发成VCU的单片机开发板进行底层代码开发板验证VCU常用的模块有PWMGPIOCANADDAFLASH等根据自己的需求进行C代码验证在验证的过程中要有意识进行抽象你中期会将代码抽象成SFunction模块例如GPIO输入就要设置分组、上下拉、引脚号你在C代码中就要把这部分抽象成变量提前留好接口需要留出什么需要自己想好第二部分MATLAB模块的建立首先打开simulink选择建立一个空白library然后界面添加几个子系统如下所示将其分门别类归纳好让子系统显示成下图这样主要在ICON设置然后双击打开子系统在里面添加sfunction添加sfunction后会让你设置name和parameters其中mex能获取的参数就是parameters提供的name则是模块的名字该外形主要是通过mask里的ICON进行配置的模块相关东西全是通过MASK配置的外形显示ICON配置参数设置即下图这些参数Port Name下拉都有什么等通过parameters选项卡设置设置完这两部分一个模块就有雏形了其中Init选项卡可以进行参数校验比如是否超范围是否为空等等但此时还无法生成代码生成代码需要继续设置别的东西模块代码生成这部分看源码读文档模块 mex和TLC这三个名字一定要相同代码生成主要有以下两部分mex文件和tlc文件mex文件是通过matlab提供的Sfunction C模板通过mex命令生成的tlc文件其中的代码很大一部分就是你在第一步部分写的底层C代码MEX文件的作用是将模块的参数和tlc文件链接起来tlc文件是代码生成的关键文件MEX文件将模块设置的GPIOB GPIO_PIN_0等参数传递给TLC然后TLC生成GPIO_Init()和GPIO_Read()C模板功能及API的官方解释C模板下载地址sfuntmpl_basic.c和 sfuntmpl_doc.c建议这两个文件仔细看看这部分还是建议找个人家没编译成mex的C文件比对着help看API功能其中比较重要的有以下几个mdlInitializeSizes指定 中各种参数的大小SimStruct例如块的输出端口数。mdlInitializeSampleTimes指定模块的采样时间。mdlOutputs计算块的输出。mdlTerminate执行模拟结束时所需的任何操作。如果不需要任何操作则可以将此函数实现为存根。mdlRTW是提供给TLC的接口参数还有一个就是输出模块配置问题比如标定 接datatype 再接PWM期望是先标定再转换再输出但有可能是先输出再标定再转换即输入到输出滞后了一轮输出模块加上ssSetInputPortDirectFeedThrough可以解决TLC文件TLC文件介绍其中最重要的有%function Outputs(block, system) Output生成的代码要放到while里一般放执行代码例如GPIO_Read%function Start(block,system) Output生成的代码要放到while之前Start里面一般放Init相关代码例如GPIO_Init其中S-function的Block parameters里面的parameters是提供给mex文件的接口你如果建好了一个模块将其放入模型生成代码看看是否正确多试试你就会比较理解了模型配置模型设置里通用栏注意这里是模型不是模块了定步长离散系统代码生成栏ert.tlc只是设置当前选项卡有什么选项等等其中模型生成代码的整体逻辑(即main文件代码)主要是这里的tlc配置如果你只是测试模块功能这里可以不用管选项卡配置我觉得讲的比较好chhttty的博客博客1和博客2标定量和观测量模块这两个模块稍微有些特殊因为你可能需要把变量定义到sct划分的某个段例如标定量你可能需要设置成这种形式__attribute__((section(***))) const volatile uint8_t calibr 10;在TLC中配置不太现实这就需要你自定义Storage Class在标定量前加上__attribute__((section(***)))这部分自定义Storage Class可以参考chhttty大佬的博客这个大佬所有的博客都很有借鉴意义强烈推荐看看这两个模块基本可以总结为模块设置好变量名添加模块的时候调用脚本在matlab工作空间生成一个Storage Class变量然后再通过脚本与simulink里的变量进行关联这样就可以生成带前缀的变量脚本放置位置既然已经生成了标定量和观测量就要准备生成ASAP2文件了推荐大佬的博客由于上一步已经做了Storage Class了所以勾选ASAP2选项后就可以生成A2L文件了但生成的A2L的文件是最基础的无法直接给INCA使用所以需要自定义A2L文件自定义A2L文件主要参考Mathworks的官方文档和小拜大佬的博客我稍微说一说关键的函数首先是asap2userlib下的ASAP2UserFcnWriteHardwareInterface函数这个主要是将A2L文件静态的头放进去其次是ASAP2UserFcnWriteMeasurement这个是跟观测量相关需要修改的主要就是Interface其余的基本不用动多看看他写的注释asap2scalar、asap2lookup2d、asap2lookup1d这三个文件分别是标定量、一二维查表相关也基本不用动最后要将自己的asap2\user添加到路径里把官方的asap2\user文件夹优先级调低或者删除就可以按照你的asap2\user文件夹下的内容生成A2L文件一二维查表模块建议使用simulink的Subsystem封装一下simulink的Lookup模块然后使用标定模块给Lookup模块XY轴输入和Table数据主要靠M文件进行参数传递模型自定义代码生产位置参考赞哥的博客其中可以拷贝一份ert.tlc然后重命名为test.tlc然后找到ert_make_rtw_hook.m也拷贝一份重命名为test_make_rtw_hook.m然后在m文件里的before_make函数下执行mkdir和copyfile两个命令进行创建文件夹和拷贝.c.h文件这样就可以将文件放到指定位置了模型使用模型参数需要修改参考大佬模型配置Solver右侧Type选为Fixed-stepSolver选为discrete然后修改步长时间0.01或者0.001Code Generation把System target file选为ert.tlc生成C代码Code Generation把Generate code only勾选ReportCreate code generation report和Open report automatically建议勾选TemplatesGenerate an example main program勾选会生成ert_mainFile customization template是配置main文件生成的逻辑选择自己的tlc文件InterfaceRemove error status field in real-time model data structure可以勾选结语此处借STM32的模块和文件进行讲解这套流程适用于所有单片机NXP英飞凌等等我已经成功实现了一种单片机效果如果改好最后的这个example这个tlc就可以达到将固定几个文件粘贴到MDK工程里就直接编译下载就能实现目标功能。最好有一套现成的这样就可以互相对比改出自己的东西只是想试试simulink和单片机联调我建议用STM32他们得工具链cubemx搭配simulink确实好用比自己开发的强多了参考博客

相关新闻

CVE-2026-64160 漏洞解析:netfs 尺寸变量并发撕裂缺陷风险处置方案

CVE-2026-64160 漏洞解析:netfs 尺寸变量并发撕裂缺陷风险处置方案

7 月 19 日 Linux 内核披露临界级安全漏洞 CVE-2026-64160,CVSS 评分 9.8,漏洞位于 netfs 网络文件系统通用库。并发读写场景下remote_i_size、zero_point变量存在数据撕裂问题,可能引发内存越界访问、内核崩溃,具备权限提升风险&…

2026/8/14 5:27:50 阅读更多 →
Docker Compose镜像整体导出与还原:离线环境迁移完整指南

Docker Compose镜像整体导出与还原:离线环境迁移完整指南

1. 项目概述:为什么需要整体导出与还原Docker Compose镜像? 在容器化开发和运维的日常工作中,我们经常会遇到这样的场景:开发环境已经用 docker-compose.yml 文件定义了一套包含多个服务的复杂应用栈,比如一个典型的…

2026/8/14 5:27:50 阅读更多 →
Android Camera开发系列(干货满满)

Android Camera开发系列(干货满满)

“Android Camera一站式 学习平台”: https://www.camerahub.cn 无论走到哪里,都会有明天~ 整理了下发布的Camera相关的文章,每个标题就是链接,可以直接点击进入查看相关内容~ 生活不息、学习不止,相关内还会持续更新…

2026/8/14 5:26:50 阅读更多 →

最新新闻

Linux内核开发模型深度解析:为何它颠覆传统软件开发?

Linux内核开发模型深度解析:为何它颠覆传统软件开发?

Linux内核开发模型深度解析:为何它颠覆传统软件开发? 【免费下载链接】kernel-development Presentation on how the Linux kernel is developed 项目地址: https://gitcode.com/gh_mirrors/ke/kernel-development Linux内核作为开源项目的典范&a…

2026/8/14 12:06:48 阅读更多 →
PyCharm配置Conda解释器:实现Python项目环境隔离与可复现性

PyCharm配置Conda解释器:实现Python项目环境隔离与可复现性

1. 项目缘起:为什么要在PyCharm里专门配置Conda解释器? 如果你刚开始用Python,可能会觉得装个Python,再装个PyCharm,直接写代码不就行了?为什么还要折腾什么Conda环境,还要在PyCharm里配置&…

2026/8/14 12:06:48 阅读更多 →
网站建设论坛首页对于新手入局的核心价值与深度解析指南

网站建设论坛首页对于新手入局的核心价值与深度解析指南

在如今这个数字化浪潮席卷全球的背景下,互联网似乎成了一片汪洋大海,每个人都在试图在这片海域中打下一片属于自己的天地。而对于很多初次涉足这个领域的创业者、技术人员或者是想要转型的传统企业老板来说,面对浩如烟海的技术文档、纷繁复杂的CMS系统、眼花缭乱的开发框架,…

2026/8/14 12:06:48 阅读更多 →
旧Mac免费升级最新macOS的完整教程:OpenCore Legacy Patcher从零上手指南

旧Mac免费升级最新macOS的完整教程:OpenCore Legacy Patcher从零上手指南

旧Mac免费升级最新macOS的完整教程:OpenCore Legacy Patcher从零上手指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 当你的Mac屏幕上的系统更…

2026/8/14 12:06:48 阅读更多 →
从新手到专家:Mockito for Dart测试场景全攻略

从新手到专家:Mockito for Dart测试场景全攻略

从新手到专家:Mockito for Dart测试场景全攻略 【免费下载链接】mockito Mockito-inspired mock library for Dart 项目地址: https://gitcode.com/gh_mirrors/moc/mockito Mockito for Dart是一款受Mockito启发的Dart模拟库,专为简化Dart应用的单…

2026/8/14 12:06:48 阅读更多 →
AMD Ryzen处理器调试工具SMUDebugTool保姆级入门:从PBO调优到MSR读写一次讲清

AMD Ryzen处理器调试工具SMUDebugTool保姆级入门:从PBO调优到MSR读写一次讲清

AMD Ryzen处理器调试工具SMUDebugTool保姆级入门:从PBO调优到MSR读写一次讲清 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. …

2026/8/14 12:05:45 阅读更多 →

日新闻

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

临沂网站建设铭镇:深耕本土数字生态,以匠心铸就企业品牌核心竞争力

在这个流量为王、视觉至上的互联网时代,对于临沂乃至整个山东乃至全国的传统中小企业来说,拥有一张精美的“数字名片”早已不再是可选项,而是生存的必答题。每当夜幕降临,沂河两岸灯火辉煌,物流之都的喧嚣逐渐沉淀为对未来的思考。我们常常听到老板们在茶余饭后探讨:为什…

2026/8/14 0:00:26 阅读更多 →
Flutter与OpenHarmony实现剧本杀组队表单开发实战

Flutter与OpenHarmony实现剧本杀组队表单开发实战

1. 项目概述在移动应用开发领域,跨平台框架Flutter因其高效的开发体验和出色的性能表现,已经成为众多开发者的首选。而OpenHarmony作为新兴的操作系统平台,其开放性和灵活性为开发者提供了全新的可能性。本文将聚焦于一个实际应用场景——剧本…

2026/8/14 0:00:26 阅读更多 →
大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

大连网站建设找简维科技:为您打造懂业务更懂用户的数字化转型引擎

在这个数字化浪潮席卷全球的今天,企业想要在激烈的市场竞争中站稳脚跟,拥有一张好看的“数字名片”已经远远不够了。很多老板在刚开始接触互联网业务时,都有一个共同的困惑:为什么我花了钱建的网站,就像是在真空中自嗨?访客进来转了两圈就跑了,线索石沉大海,甚至连客服…

2026/8/14 0:01:27 阅读更多 →

周新闻

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁

5分钟告别提取码焦虑:baidupankey如何智能破解百度网盘资源锁 【免费下载链接】baidupankey 在线查询网盘提取码(维护中 rm repo) 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经在深夜寻找一份重要资料&#x…

2026/8/13 2:38:34 阅读更多 →
如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南

如何快速生成中国车牌图片:Python开源工具完整指南 【免费下载链接】chinese_license_plate_generator 中国车牌生成器 项目地址: https://gitcode.com/gh_mirrors/ch/chinese_license_plate_generator 中国车牌生成器是一个基于Python的开源项目&#xff0c…

2026/8/13 10:41:52 阅读更多 →
收藏!小白程序员轻松入门大模型,从Harness工程开始实践

收藏!小白程序员轻松入门大模型,从Harness工程开始实践

文章强调学习大模型不应只关注模型本身,而应重视模型外的系统搭建,即Harness。提出AgentModelHarness的实用公式,详细介绍Harness的四个层次:持久化层、执行层、控制层和观察与验证层。文章还探讨了上下文工程、工具设计、AGENTS.…

2026/8/13 10:41:51 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/13 10:41:50 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/13 10:41:49 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/13 10:41:49 阅读更多 →