主要内容

指定初始化、输出和终止

setupImplstepImpl 方法通过钩子将 C 函数关联到 System object™。将数字引脚初始化为输出只需在模型初始化时完成一次。因此,MW_gpioInit 函数在 setupImpl 中调用。为了更新数字输出引脚的逻辑状态,从 stepImpl 方法调用 MW_gpioRead。在终止时,从 releaseImpl 方法调用 MW_gpioTerminate 以释放硬件资源。按照以下步骤更新您在选择 System object 模板中创建的 DigitalRead System object 的初始化、输出和终止代码节。

  1. 在 MATLAB® 编辑器中,打开 DigitalRead.m 类文件。

  2. 使用以下代码更新 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.cinlcude('MW_gpio.h');
                coder.ceval('MW_gpioInit', 9, 0);
            end
        end
        ...
    end

    coder.ceval 函数执行对 MW_gpio.h 中 C 包装函数的调用。coder.ceval 的第二个和第三个参量分别是 ARM® Cortex®-A 硬件板引脚编号和值。

  3. 使用以下代码更新 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
  4. 使用以下代码更新 stepImpl 方法。

    methods(Access=protected)
        ...
        function y = stepImpl(obj) %#ok<MANU>
            y = double(0);
            if isempty(coder.target)
                % Place simulation output code here
            else
                % Call C-function implementing device output
                y = coder.ceval('MW_gpioRead', 9);
            end
        end
        ...
    end

    DigitalWrite System object 不同,DigitalRead System object 的 stepImpl 方法定义输出 y,后者是选定引脚的逻辑值。

  5. 使用以下代码更新 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

在下一节中,您将对您的 System object 设置输出端口属性

另请参阅

| |