Main Content

使用 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 中。这将导入总线类型 LIMITBUSCOUNTERBUS 以及枚举类型 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);

另请参阅

相关主题