주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.

초기화, 출력 및 종료 동작 지정

setupImplstepImpl 메서드는 C/C++ 함수를 System object™에 후킹합니다. C/C++ 장치 드라이버 코드 작성에 대한 자세한 내용은 하드웨어별 C/C++ 코드 작성하기를 참조하십시오. 디지털 핀을 출력으로 초기화하는 작업은 모델 초기화 시 한 번만 수행하면 됩니다. 따라서 setupImpl 내에서 MW_gpioInit 함수가 호출됩니다. 디지털 출력 핀의 논리 상태를 업데이트하기 위해, stepImpl 메서드에서 MW_gpioWrite를 호출합니다. 종료 시, 하드웨어 리소스를 해제하기 위해 releaseImpl 메서드에서 MW_gpioTerminate를 호출합니다. System object 템플릿 선택에서 생성한 DigitalWrite System object의 초기화, 출력 및 종료 코드 섹션을 업데이트하려면 다음 단계를 따르십시오.

  1. MATLAB® 편집기에서 DigitalWrite.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.cinclude('MW_gpio.h');
                coder.ceval('MW_gpioInit', 9, 1);
            end
        end
        ...
    end

    coder.ceval 함수는 digitalio_arduino.h에 있는 C 래퍼 함수 호출을 실행합니다. coder.ceval의 두 번째 인수와 세 번째 인수는 각각 하드웨어 핀 번호와 핀 모드 값입니다.

  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 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
  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

다음 단원에서는 MATLAB 명령줄에서 System object 테스트를 배우게 됩니다.

참고 항목

| |