- 하드웨어 설정 및 요구 사항
- N76E003 LED 및 푸시 버튼 인터페이스 회로
- N76E003 핀아웃 다이어그램
- N76E003 용 간단한 GPIO 제어 프로그램
- N76E003 프로그래밍 및 출력 확인
이전 자습서에서는 N76E003 가이드를 시작하기 위해 기본 LED 깜박임 프로그램 을 사용했으며 Keil IDE를 구성하는 방법과 nuvoton 마이크로 컨트롤러 장치 N76E003 을 프로그래밍하기위한 환경을 설정하는 방법을 이미 배웠습니다. 조금 더 나아가 추가 하드웨어를 제어 하기 위해 기본 GPIO 인터페이스 를 사용할 때 입니다. 관심이 있으시면 아래 나열된 다른 마이크로 컨트롤러 GPIO 자습서를 확인할 수도 있습니다.
- CubeMx 및 TrueSTUDIO가 포함 된 STM32 Nucleo64 – LED 제어
- Cosmic C GPIO 제어 기능이있는 STM8S
- MPLABX LED Blink 튜토리얼이있는 PIC
- Code Composer Studio가 포함 된 MSP430 – 간단한 LED 제어
이전 자습서에서 IO 핀을 출력으로 사용하여 깜박이는 데 LED 만 사용했습니다. 이 튜토리얼에서는 다른 IO 핀을 입력 으로 사용하고 추가 LED를 제어하는 방법을 배웁니다. 많은 시간을 낭비하지 않고 어떤 종류의 하드웨어 설정이 필요한지 평가 해 봅시다.
하드웨어 설정 및 요구 사항
스위치를 입력으로 사용해야하므로 가장 먼저 필요한 것은 푸시 버튼입니다. 또한 해당 푸시 버튼으로 제어 할 추가 LED가 필요합니다. 이 두 가지 외에 LED 전류를 제한하기위한 저항과 푸시 버튼을 통한 풀다운 목적을위한 추가 저항이 필요합니다. 이것은 회로도 섹션에서 더 자세히 설명합니다. 필요한 구성 요소-
- 누름 버튼 (특히 모든 종류의 순간 스위치-촉각 스위치)
- LED의 모든 색상
- 풀다운 목적을위한 4.7k 저항
- 100R 저항기
말할 것도없이, 위의 구성 요소 외에 N76E003 마이크로 컨트롤러 기반 개발 보드와 Nu-Link 프로그래머가 필요 합니다. 또한 아래 그림과 같이 모든 구성 요소를 연결하는 데 브레드 보드 및 연결 와이어도 필요합니다.
N76E003 LED 및 푸시 버튼 인터페이스 회로
아래 회로도에서 볼 수 있듯이 개발 보드 내부의 테스트 LED는 포트 1.4 에 연결되고 추가 LED는 포트 1.5 에 연결됩니다. 저항 R3은 LED 전류를 제한하는 데 사용됩니다.
핀 1.6에서 SW라는 이름의 푸시 버튼이 연결됩니다. 버튼을 누를 때마다 핀이 높아집니다. 그렇지 않으면 4.7K 풀다운 저항 R1에 의해 낮아집니다. 이 개념을 처음 접하는 경우 풀업 및 풀다운 저항에 대해 자세히 알아볼 수 있습니다.
핀은 프로그래머가 액세스하는 프로그램 관련 핀이기도합니다. 프로그램 데이터를 보내는 데 사용됩니다. 그러나 이러한 핀을 선택하는 이유 와 N76E003 의 핀 매핑에 대한 공정한 정보를 얻을 수 있습니다.
N76E003 핀아웃 다이어그램
N76E003 의 핀 다이어그램은 아래 이미지에서 볼 수 있습니다.
보시다시피 각 핀에는 여러 기능이 있으며 다른 용도로 사용할 수 있습니다. 예를 들어 보겠습니다. 핀 1.7은 인터럽트, 아날로그 입력 또는 범용 입출력 동작으로 사용할 수 있습니다. 따라서 핀이 I / O 핀으로 사용되는 경우 해당 기능을 사용할 수 없습니다.
이로 인해 LED 출력 핀으로 사용되는 핀 1.5는 PWM 및 기타 기능을 잃게됩니다. 그러나이 프로젝트에는 다른 기능이 필요하지 않기 때문에 문제가되지 않습니다. 쉬운 연결을 위해 GND 및 VDD 핀을 가장 가깝게 사용할 수 있기 때문에 핀 1.5를 출력으로, 핀 1.6을 입력으로 선택하는 이유 입니다.
그러나이 마이크로 컨트롤러에서 20 핀 중 18 핀을 GPIO 핀으로 사용할 수 있습니다. 핀 2.0은 리셋 입력 전용으로 사용되며 출력으로 사용할 수 없습니다. 이 핀을 제외한 모든 핀은 아래 설명 된 모드에서 구성 할 수 있습니다.
데이터 시트에 따르면 PxM1.n 및 PxM2.n은 I / O 포트의 제어 작동을 결정하는 데 사용되는 두 개의 레지스터입니다. 이제 GPIO 포트를 쓰고 읽는 것은 완전히 다른 일입니다. 포트 제어 레지스터에 쓰는 것은 포트의 래칭 상태를 변경하는 반면 포트를 읽는 것은 논리 상태의 상태를 가져 오기 때문입니다. 그러나 포트를 읽기 위해서는 입력 모드로 설정해야합니다.
N76E003 용 간단한 GPIO 제어 프로그램
이 튜토리얼에서 사용되는 전체 프로그램은이 페이지 하단에서 찾을 수 있으며 코드에 대한 설명은 다음과 같습니다.
핀을 입력으로 설정
먼저 입력부터 시작하겠습니다. 앞에서 설명한 것처럼 포트의 상태를 읽으려면 입력으로 설정해야합니다. 따라서 입력 스위치 핀으로 P1.6을 선택 했으므로 아래 코드 스 니펫을 통해 표시했습니다.
#define SW P16
이 동일한 핀을 입력으로 설정해야합니다. 따라서 설정 기능에서 핀은 아래 줄을 사용하여 입력으로 설정됩니다.
무효 설정 (무효) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
이 줄 P16_Input_Mode; 핀 비트를 P1M1- = SET_BIT6 으로 설정하는 "BSP 포함 라이브러리" 의 Function_define.h 헤더 파일에 정의되어 있습니다 . P1M2 & = ~ SET_BIT6 . SET_BIT6은 같은 헤더 파일에 정의 된 직후
#define SET_BIT6 0x40
핀을 출력으로 설정
입력 핀과 마찬가지로 온보드 테스트 LED 및 외부 LED1에서 사용하는 출력 핀도 코드의 첫 번째 섹션에서 각 PIN과 함께 정의됩니다.
#define Test_LED P14 #define LED1 P15
이러한 핀은 아래 라인을 사용하여 설정 기능에서 출력으로 설정됩니다.
무효 설정 (무효) { P14_Quasi_Mode; // 출력 P15_Quasi_Mode; // 출력 P16_Input_Mode; }
이 행은 핀 비트를 P1M1 & = ~ SET_BIT4 로 설정하는 Function_define.h 헤더 파일 에도 정의되어 있습니다 . P1M2 & = ~ SET_BIT4 . SET_BIT6은 같은 헤더 파일에 정의 된 직후
#define SET_BIT4 0x10
무한 While 루프
지속적으로 출력을 제공해야하는 전원과 연결되고 완벽하게 작동하는 하드웨어는 애플리케이션이 멈추지 않습니다. 무한한 시간 동안 같은 일을합니다. 무한 while 루프 의 기능이 있습니다. while 루프 내부의 애플리케이션은 무한히 실행됩니다.
while (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); if (SW == 1) {LED1 = 0; } else {LED1 = 1; }}}
위의 while 루프는 sw_delay 값에 따라 LED를 점멸 하고 SW의 상태를 확인합니다. 스위치를 눌렀을 때 P1.6은 하이가되고, 눌려지면 읽기 상태는 1이됩니다.이 상황에서 한동안 스위치를 눌렀을 때 포트 P1.6은 하이를 유지합니다. LED1이 켜집니다.
N76E003 프로그래밍 및 출력 확인
우리가에서 N76E003를 시작하기 튜토리얼, 우리는 우리가 우리의 보드를 프로그래밍 할 수 여기에 같은 단계를 반복 있도록, 이미 N76E003를 프로그래밍하는 방법을 배웠습니다. 코드가 성공적으로 컴파일되었고 0 개의 경고와 0 개의 오류가 반환되었으며 Keil의 기본 플래싱 방법을 사용하여 플래싱되었습니다.
위 이미지에서 볼 수 있듯이 누름 버튼을 누르면 외부 LED가 켜집니다. 프로젝트의 전체 작업은 아래 링크 된 비디오에서 찾을 수 있습니다. 튜토리얼을 즐겼고 궁금한 점이 있으면 유용한 것을 배우 셨기를 바랍니다. 아래 댓글 섹션에 남겨주세요. 포럼을 사용하여 다른 기술적 인 질문을 할 수도 있습니다.