|
1. 상하층 연결 이전 기사에서지그비 여정 (1): 개척, 우리는 간단히 Zigbee와 그 개발 환경을 소개합니다. 이제 도구들이 완성되었으니, 질문이 생깁니다: 이 소프트웨어와 하드웨어를 어떻게 사용해 실행할 수 있는 프로그램을 작성할 수 있을까요? 이 글은 기본적으로 위의 질문에 답하기 위한 것입니다: "LED 빛 깜빡임"이라는 작은 실험을 예로 들어 CC2430 기반 프로그램 개발에 적합한 IAR을 어떻게 구성하고 사용하는지 소개합니다IAR온라인으로 프로그램을 작성하고 디버깅하세요. 2. IAR 구성 IAR은 다양한 칩을 지원하는 강력한 임베디드 개발 플랫폼입니다. IAR의 각 프로젝트는 장치 유형, 스택/스택, 링커, 디버거 등 자체 구성을 가질 수 있습니다. (1) 새로운 작업 공간 및 프로젝트 생성 먼저, 새 폴더 ledtest를 만드세요. IAR을 열고 메인 메뉴에서 파일 -> 새 -> Workspace 중에서 새 작업 공간을 생성하세요. 프로젝트 -> 새 프로젝트 생성 -빈 프로젝트 >을 선택한 후 확인을 클릭한 후 아래 참조와 같은 ledtest.ewp 폴더에 프로젝트 파일을 저장하세요.
(2) 일반 옵션 구성 목표 설정: 장치: CC2430; 코드 모드: 근처; 데이터 모델: 대형; Calling convention:XDATA stack reetrant
데이터 포인터 설정: DPTR 수: 1
스택/힙 설정: XDATA 스택 크기: 0x1FF
(3) 링커 설정 linker 명령 파일: Select lnk51ew_cc2430.xcl
(4) 디버거 설정: 드라이버: 텍사스 인스트루먼트 (이 실험은 실제 기계 디버깅이므로 TI를 선택하세요; 다른 프로그램이 IAR 시뮬레이터를 사용하고 싶다면, Simulator를 선택할 수 있습니다) 장치 설명 파일: CC2430.ddf
이 시점에서 이 실험의 IAR 구성은 기본적으로 끝났으며, 다음은 그 코딩 구현에 대한 소개입니다. 3. 프로그램 코드 작성(1) 새로운 절차 문서 작성 File->New->File을 선택하고 새 파일 main.c를 생성하세요. (2) 헤더 파일 도입 CC2430 기반 프로그램에는 ioCC2430.h에 대한 참조가 포함되어야 하며, 이는 CC2430의 다양한 특수 기능 레지스터(SFR)의 주소 매핑을 정의합니다. #include //引入CC2430所对应的头文件(包含各SFR的定义)
이 파일은 IAR(stdio.h와 유사)에 내장되어 있습니다. 이 코드 라인에 마우스를 올리고 우클릭 후 선택하세요OPen "ioCC2430.h"이 헤더 파일의 전체 내용을 보기 위해 (3) LED 핀 정의 개발 보드 회로도를 다음과 같이 확인하세요:
LED1~4는 각각 핀 P1_0~P4_0로 제어되므로 LED1, LED2, LED3, LED4는 각각 핀 P1_0, P2_0, P3_0, P4_0로 정의할 수 있습니다. #define LED1 P1_0 // LED1을 P1_0 포트 제어로 정의하세요 #define LED2 P1_1 // LED2를 포트 제어로 정의P1_1 #define LED3 P1_2 // LED3를 P1_2 포트 제어로 정의하세요 #define LED4 P1_3 // LED4를 P1_3 포트 제어로 정의하세요
(4) 주요 기능 다음으로, 주요 함수를 작성하기 시작하세요. 우선, P1.0~P1.4 포트를 사용하기 전에 작업 모드와 입출력 방향을 설정해야 하며, 이는 두 개의 SFR(P1SEL과 P1DIR)을 포함합니다. P1SEL = 0x00; P1을 일반 I/O 포트로 설정하세요 P1DIR |= 0x0F; 출력으로 P1.0, P1.1, P1.2, P1.3을 설정하세요
지그비 팁 CC2430은 다음과 같은 기능을 갖추고 있습니다:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7총 21개의 입출력 포트입니다. 이들은 범용 디지털 I/O로 사용될 수도 있고, ADC, 타이밍/카운터, USART와 같은 주변 IO를 연결하는 데 사용될 수 있습니다. CC2430의 SFR에는 이 IO 포트를 구성할 수 있는 세 가지 종류의 레지스터가 있습니다: (1)PxSEL(x는 0/1/2) :P 0/P1/P2 포트 기능 선택 0: 범용 수치 IO, 1: 주변 IO, 기본값은 0입니다 (2)PxDIR(x는 0/1/2) :P 0/P1/P2 포트 방향 0: 입력, 1: 출력, 기본값은 0입니다 (3)PxINP(x는 0/1) :P 0/P1 포트 입력 모드 0: 풀업/다운, 1: 세 가지 상태, 기본값은 0입니다 IO 포트를 사용할 때 설정해야 하며, 기본값이면 시스템의 기본 값을 사용합니다. 그 다음 4개의 LED를 초기화하고 모두 꺼지도록 설정하세요: led1 = 1; led2 = 1; led3 = 1; led4 = 1;
마지막으로, LED 깜빡임 효과 코드를 작성하세요: led1 = 0; LED1 깜빡임 지연(10); led1 = 1; 지연(10);
led2 = 0; LED2 깜박임 지연(10); led2 = 1; 지연(10);
led3 = 0; LED3 깜빡임 지연(10); led3 = 1; 지연(10);
led4 = 0; LED4 깜빡임 지연(10); led4 = 1; 지연(10);
이는 지연 하위 함수 Delay(부호 없는 char n)를 포함합니다: 공허 지연(부호 없는 문자 n) { 서명 없는 차르 1세; 계약 없는 인터셉트 J; for(i = 0; 나는 < N; i++) for(j = 1; j; j++) ; }
(5) 코드 개요 위 코드를 다음과 같이 하나의 전체로 결합하세요: //引入头文件
#include //引入CC2430所对应的头文件(包含各SFR的定义)
//定义LED引脚
#define 이끄는 1 P1_0 //定义LED1为P1_0口控制
#define led2 P1_1 //定义LED2为P1_1口控制
#define led3 P1_2 //定义LED3为P1_2口控制
#define led4 P1_3 //定义LED4为P1_3口控制 //延时子程序
공허지연(서명 없음 차어n) {
서명 없음 차어나는;
서명 없음 지능j;
에 대해(i =0; 나는 < N; i++)
에 대해(j =1; j; j++) ;
}
공허주요(공허)
{ P1SEL =0x00; P1을 일반 I/O 포트로 설정하세요 P1DIR |=0x0F; 출력으로 P1.0, P1.1, P1.2, P1.3을 설정하세요
LED1 =1; //初始化,4个led灯全熄 led2 =1; led3 =1; LED4 =1;
반면(1) //开始循环 { LED1 =0; //led1闪烁 지연(10); LED1 =1; 지연(10);
led2 =0; //led2闪烁 지연(10); led2 =1; 지연(10);
led3 =0; //led3闪烁 지연(10); led3 =1; 지연(10);
LED4 =0; //led4闪烁 지연(10); LED4 =1; 지연(10); }
}
좋아, 이 작은 실험의 코드가 작성됐어, 아주 간단하지 않아, 헤헤~ 4. 컴파일 및 디버깅 프로젝트 -> 만들기를 선택하고 코드를 컴파일한 후 성공하면 다음 결과물이 나타납니다:
언론PC용 지그비 개발 보드 → 디버거 → USB 인터페이스그리고 Project -> Debug를 선택하면 프로그램이 자동으로 보드에 다운로드됩니다. 그다음 Debug -> Go 옵션을 선택하면 프로그램을 시작하면 4개의 LED 불빛이 차례로 깜빡이는 것을 볼 수 있습니다! 이건 너무 단순해서 단순할 수 없는 작은 실험이지만, 작가가 성공적으로 실현했을 때 저는 여전히 조금 설렜어요~ 헤헤! 5. 결론 "LED 조명 깜빡임 실험"을 바탕으로, 이 논문은 IAR 구성, 프로그램 코드 작성, 컴파일 및 디버깅 과정까지 전체 구현 과정을 소개합니다. 다음 글에서는 프로그램 개발 기본 과정을 이해한 바탕으로 CC2430 개발을 위한 몇 가지 기본 실험을 소개할 것입니다타이머、직렬 통신、AD 전환、체계적인 수면과 감시견기타 등등, 계속 지켜봐 주세요!
|