이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 9158|회답: 0

지그비 저니 (2): 첫 번째 CC2430 프로그램 - LED 조명 깜박임 실험

[링크 복사]
게시됨 2014. 10. 30. 오후 11:15:39 | | | |
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 전환체계적인 수면과 감시견기타 등등, 계속 지켜봐 주세요!






이전의:지그비 여정 (1): 땅을 파다
다음:지그비 여정 (3): 여러 중요한 CC2430 기본 실험 - 외부 중단
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com