이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
초기화, 출력 및 종료 조건 지정
setupImpl 및 stepImpl 메서드는 C 함수를 System object™에 후킹합니다. 디지털 핀을 출력으로 초기화하는 작업은 모델 초기화 시 한 번만 수행하면 됩니다. 따라서 setupImpl 내에서 MW_gpioInit 함수가 호출됩니다. 디지털 출력 핀의 논리 상태를 업데이트하기 위해, stepImpl 메서드에서 MW_gpioRead를 호출합니다. 종료 시, 하드웨어 리소스를 해제하기 위해 releaseImpl 메서드에서 MW_gpioTerminate를 호출합니다. System object 템플릿 선택에서 생성한 DigitalRead System object의 초기화, 출력 및 종료 코드 부분을 업데이트하려면 다음 단계를 따르십시오.
MATLAB® 편집기에서
DigitalRead.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.cinlcude('MW_gpio.h'); coder.ceval('MW_gpioInit', 9, 0); end end ... end
coder.ceval함수는MW_gpio.h에 있는 C 래퍼 함수 호출을 실행합니다.coder.ceval의 두 번째 및 세 번째 인수는 각각 ARM® Cortex®–A 하드웨어 보드의 핀 번호와 값입니다.다음 코드를 사용하여
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 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
DigitalWriteSystem object와 달리,DigitalReadSystem object에 대한stepImpl메서드는 선택된 핀의 논리값인y를 출력으로 정의합니다.다음 코드로
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에 대해 출력 포트 속성 설정를 배우게 될 것입니다.