使用 C Caller 模块调用 C 函数
此示例说明如何使用 C Caller 模块在 Simulink® 中调用您的手写 C 函数。
在此示例中,五个自定义 C 函数在 my_func.h
中定义并在 my_func.c
中实现。
导入自定义代码使用的 C 结构体和枚举类型
C Caller 模块支持 C 结构体和枚举类型。使用命令 Simulink.importExternalCTypes
将这些类型作为匹配的 Simulink.Bus
对象或 Simulink.IntEnumType
类导入 Simulink 中。这将导入总线类型 LIMITBUS
和 COUNTERBUS
以及枚举类型 TrafficLightColor
。这些类型出现在 MATLAB 工作区中。
Simulink.importExternalCTypes('my_func.h', 'EnumClass', 'dynamic');
打开模型
model = 'slexCCallerExample';
open_system(model);
将头文件添加到仿真目标配置中
在模型配置参数的仿真目标窗格中指定您的自定义头文件和源文件。指定绝对路径或相对于模型目录或当前 MATLAB 目录的路径。
在“包含头文件”窗格中使用 C 预处理器语法来包括您的自定义头文件。例如,要包括 my_func.h
头文件,请输入以下行:
#include "my_func.h"
configset.highlightParameter(model, "SimCustomHeaderCode");
将源文件添加到仿真目标配置中
在仿真目标配置的“源文件”窗格中使用以空格分隔的源文件列表。如果文件名包含空格,请用双引号将其引起来,例如:"my c file.c"
。
configset.highlightParameter(model, "SimUserSources");
对模型进行仿真
当您仿真模型时,Simulink 会在每个时间步调用您的自定义 C 函数。
sim(model);