指定初始化、输出和终止行为
setupImpl 和 stepImpl 方法通过钩子将 C/C++ 函数关联到 System object™。有关创建 C/C++ 设备驱动代码的详细信息,请参阅编写硬件特定的 C/C++ 代码。将数字引脚初始化为输出只需在模型初始化时完成一次。因此,MW_gpioInit 函数在 setupImpl 中调用。为了更新数字输出引脚的逻辑状态,从 stepImpl 方法调用 MW_gpioWrite。在终止时,从 releaseImpl 方法调用 MW_gpioTerminate 以释放硬件资源。按照以下步骤更新您在选择 System object 模板中创建的 DigitalWrite System object 的初始化、输出和终止代码节。
在 MATLAB® 编辑器中,打开
DigitalWrite.m类文件。使用以下代码更新
setupImpl方法。methods (Access=protected) function setupImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation setup code here else % Call C-function implementing device initialization coder.cinclude('MW_gpio.h'); coder.ceval('MW_gpioInit', 9, 1); end end ... end
coder.ceval函数执行对digitalio_arduino.h中 C 包装函数的调用。coder.ceval的第二个和第三个参量分别是硬件引脚编号和引脚模式值。使用以下代码更新
BuildInfo方法。methods (Static) ... function updateBuildInfo(buildInfo, context) if context.isCodeGenTarget('rtw') % Update buildInfo srcDir = fullfile(fileparts(mfilename('fullpath')),'src'); %#ok includeDir = fullfile(fileparts(mfilename('fullpath')),'include'); addIncludePaths(buildInfo,includeDir); % Use the following API's to add include files, sources and linker flags addSourceFiles(buildInfo,'MW_gpio.c', srcDir); end end ... end
使用以下代码更新
stepImpl方法。methods(Access=protected) ... function stepImpl(obj,u) %#ok<INUSD> if isempty(coder.target) % Place simulation setup code here else % Call C-function implementing device output coder.ceval('MW_gpioWrite', 9, u); end end ... end
使用以下代码更新
releaseImpl方法。methods(Access=protected) ... function releaseImpl(obj) %#ok<MANU> if isempty(coder.target) % Place simulation termination code here else % Call C-function implementing device termination coder.ceval('MW_gpioTerminate', 9); end end ... end
在下一节中,您将在 MATLAB 命令行上测试 System object。
另请参阅
创建 Digital Write 模块 | 选择 System object 模板 | 在 MATLAB 命令行上测试 System object