当前位置: 首页 > news >正文

matlab——simulink学习(5向NXP库中添加新模块)

向NXP库中添加新的函数模块

  • 一、环境
  • 二、库添加模块
    • 1.打开文件夹
    • 2.创建文件
    • 3.添加S-Function
  • 三、浏览器添加模块

一、环境

Windows10、MATLAB R2022b、安装NXP的S32K1XX系列工具包

二、库添加模块

1.打开文件夹

在文件系统中找到安装工具包的位置,用文件资源管理器打开。
在这里插入图片描述
找到你需要修改的模块(路径一般为C:\Users\Administrator\AppData\Roaming\MathWorks\MATLAB Add-Ons\Toolboxes\NXP_MBDToolbox_S32K1xx\mbdtbx_s32k\blocks)
在这里插入图片描述

2.创建文件

进入对应的模块文件夹后,新建两个文件。修改后缀名。分别为.tlc文件(用于调用NXP驱动库的脚本语言,及函数的实现)、.c文件(封装模块的内部参数配置,如模块的输出个数、输入个数、是否为离散型等信息)
.tlc代码,实现开启或者关闭全局中断

%implements lpuart_s32k_set_buffer "C"%% Copyright (c) 2022 NXP.
%% All rights reserved.%function Outputs(block, system) Output%if FEVAL("mbd_s32k_is_codegen_compatible", CompiledModel.Name)%assign blockPath = LibGetBlockPath(block)%assign sdk_params = FEVAL ("Sys_EnableIRQGlobal", blockPath){%assign sys_enable = sdk_params.sys_enableirqglobal%if FEVAL("strcmp","%<sys_enable>","enable")INT_SYS_EnableIRQGlobal();%elseINT_SYS_DisableIRQGlobal();%endif}}%endif
%endfunction

.c代码

/* File: Sys_EnableIRQGlobal.c */
#define S_FUNCTION_NAME  Sys_EnableIRQGlobal
#define S_FUNCTION_LEVEL 2#include "simstruc.h"static void mdlInitializeSizes(SimStruct *S) {ssSetNumSFcnParams(S, 0);           // No parametersif (ssGetNumSFcnParams(S) != ssGetSFcnParamsCount(S)) {return;                         // Parameter mismatch}if (!ssSetNumInputPorts(S, 0)) return;if (!ssSetNumOutputPorts(S, 0)) return;// ssSetNumInputPorts(S, 0);           // No input port// ssSetInputPortWidth(S, 0, 0);       // Scalar input// ssSetInputPortDirectFeedThrough(S, 0, 0); // No direct feedthrough// ssSetNumOutputPorts(S, 0);          // No output port// ssSetOutputPortWidth(S, 0, 0);      // Scalar output// ssSetNumContStates(S, 0);           // No continuous state// ssSetNumSampleTimes(S, 1);          // One sample time
}
static void mdlInitializeSampleTimes(SimStruct *S) {
}static void mdlOutputs(SimStruct *S, int_T tid) {
}static void mdlTerminate(SimStruct *S) {
}
// static void mdlInitializeSampleTimes(SimStruct *S) {
//     ssSetSampleTime(S, 0, CONTINUOUS_SAMPLE_TIME); // Continuous sample time
//     ssSetOffsetTime(S, 0, 0.0);
// }// static void mdlOutputs(SimStruct *S, int_T tid) {
//     real_T *x = ssGetContStates(S);     // Continuous state
//     real_T *u = ssGetInputPortSignal(S, 0); // Input signal
//     real_T *y = ssGetOutputPortSignal(S, 0); // Output signal//     *y = *x;                            // Output is the state
// }// static void mdlDerivatives(SimStruct *S) {
//     real_T *x_dot = ssGetdX(S);         // Derivative of state
//     real_T *u = ssGetInputPortSignal(S, 0); // Input signal//     *x_dot = *u;                        // Derivative equals input
// }#ifdef  MATLAB_MEX_FILE
#include "simulink.c"
#else
#include "cg_sfun.h"
#endif

然后在matlab命令行mex编译.c文件(没得MinGW64自行下载)。
在这里插入图片描述

3.添加S-Function

在任意地方,选择lpuart模块右键,跳转至库链接
在这里插入图片描述
解锁库,并添加S-Function
在这里插入图片描述
双击写函数名和参数
在这里插入图片描述

右键编辑封装
在这里插入图片描述
在这里插入图片描述
然后再将库锁定

三、浏览器添加模块

锁定完后,刷新库就会有,移植可能会丢失,需要自行解决,目前未找到解决办法。

http://www.lryc.cn/news/611748.html

相关文章:

  • 计算机网络:如何判断B或者C类IP地址是否划分了子网
  • Linux之Shell脚本基本语法
  • 3步学会使用渲染101--3DMAX云渲染
  • 【计算机网络 | 第3篇】物理媒介
  • 【数据结构与算法-Day 12】深入浅出栈:从“后进先出”原理到数组与链表双实现
  • 探索Linux MMC子系统的奥秘
  • TypeScript 元组类型精简知识点
  • 大数据存储域——HDFS存储系统
  • MCP协议与Spring AI框架实战
  • NY112NY117美光固态闪存NY119NY123
  • 新手向:Python实现简易计算器
  • 疯狂星期四文案网第30天运营日记
  • mysql索引的用法
  • Suno API V5模型 python源码 —— 使用灵感模式进行出创作
  • 国产3D大型装配设计新突破①:图纸打开设计双加速 | 中望3D 2026
  • rsync 的三种常见用法
  • 学习bug
  • jmm 指令重排 缓存可见性 Volatile 内存屏障
  • word2vector细致分解(CBOW, SKIP_GRAM, 层次soft Max, 负采样)
  • linux创建虚拟内存
  • Linux Vim 常用快捷键
  • Java学习第一百一十部分——CI/CD
  • 【完整源码+数据集+部署教程】爬行动物异常检测系统源码和数据集:改进yolo11-GhostDynamicConv
  • 一个php 连sqlserver 目标计算机积极拒绝,无法连接问题的解决
  • CVE-2021-30661、CVE-2021-30665、CVE-2021-30666
  • 浅谈对linux进程池的理解
  • back_inserter 详解
  • 快手小店客服自动化回复
  • 基于 Jenkins Pipeline 实现 DITA 文档自动化构建与发布(开源方案)
  • 基于模式识别的订单簿大单自动化处理系统