架构师_程序员_码农网

사용자 이름 비밀번호 검색
등록하기

QQ登录

시작하기 위한 한 단계

검색
架构师_程序员_码农网 " 架构师 ' 管理专区&Management Area ' 불만 및 제안 ' 回收站 ' 【转】Zigbee之旅(二):第一个CC2430程序--. -LED가 깜박임 ...
보기:6245|댓글: 0
打印 上一主题 下一主题

지그비 여정 (II): 첫 번째 CC2430 프로그램 - LED 깜박임 실험

[링크 복사]
직접 리프트 跳转到指定楼层
건물 소유주
게시됨 : 2014-10-30 23:15:39|작성자만 보기回帖奖励| 역방향찾아보기| 읽기 모드
I. 중단한 부분 이어가기

이전 글인 "지그비 여정(I): 시작" 에서 지그비와 개발 환경에 대해 간략하게 소개했습니다. 이제 도구가 완성되었으니 소프트웨어와 하드웨어를 사용하여 실행 가능한 프로그램을 작성하는 방법은 무엇일까요?

이 글은 기본적으로 위의 질문에 답하기 위한 것입니다: 작은 실험의 예로 "LED 조명 깜박임", CC2430 기반 프로그램 개발을 위해 IAR을 구성하는 방법, IAR을 사용하여 온라인으로 프로그램을 작성하고 디버깅하는 방법.

IAR 구성

IAR은 다양한 종류의 칩을 지원하는 강력한 임베디드 개발 플랫폼으로, IAR의 각 프로젝트는 디바이스 유형, 힙/스택, 링커, 디버거 등 고유한 구성을 가질 수 있습니다.

(1) 새 워크스페이스 및 프로젝트

먼저 ledtest 폴더를 새로 생성하고 IAR을 열고 메인 메뉴 파일 -> 새로 만들기 -> 워크스페이스를 선택하여 새 워크스페이스를 생성합니다.

프로젝트 -> 새 프로젝트 생성 -> 프로젝트 비우기를 선택하고 확인을 클릭한 후 프로젝트 파일을 ledtest 폴더에 ledtest.ewp(아래와 같이)라는 이름으로 저장합니다.

(2) 일반 옵션 구성

대상 설정: 장치: CC2430;

코드 모드: 근거리;

데이터 모델: 대형;

호출 규칙: XDATA 스택 재시작

데이터 포인터 설정: DPTR 수: 1

스택/힙 설정: XDATA 스택 크기: 0x1FF

(3) 링커 설정

링커 명령 파일: 선택 lnk51ew_cc2430.xcl

(4) 디버거 설정:


드라이버: 텍사스 인스트루먼트(이 실험은 실제 머신 디버깅을 위한 것이므로 TI를 선택, 다른 절차로 IAR 에뮬레이터를 사용할 경우 시뮬레이터 옵션) 장치 설명 파일: CC2430.ddf

이 시점에서 이 실험을 위한 IAR 구성은 기본적으로 끝났으며, 코딩 구현을 소개하기 위해 다음과 같이 설명합니다.

셋째, 프로그램 코드 준비(1) 새 프로그램 파일만들기

파일->새로 만들기->파일을 선택하고 main.c 파일을 새로 만듭니다.

(2) 헤더 파일 도입

CC2430 기반 프로그램에는 CC2430의 다양한 유형의 특수 기능 레지스터(SFR)의 주소 매핑을 정의하는 ioCC2430.h에 대한 참조가 포함되어야 합니다.

# include //CC2430에 해당하는 헤더 파일을 삽입합니다(각 SFR의 정의가 포함됨).

이 파일은 IAR에 내장되어 있으며(stdio.h와 유사), 이 코드 줄에 마우스를 가져간 후 마우스 오른쪽 버튼을 클릭하고 "ioCC2430.h" 열기 를 선택하면 이 헤더 파일의 전체 내용을 볼 수 있습니다.

(3) LED 핀 정의

아래와 같이 개발 보드의 회로도를 확인합니다:

led1~4는 각각 P1_0~P4_0 핀으로 제어하는 것으로 알려져 있으므로 led1, led2, led3, led4를 각각 P1_0, P2_0, P3_0, P4_0 핀으로 정의할 수 있습니다.


#led1 P1_0 //define led1을 P1_0 포트 제어로 정의 #define led2 P1_1

//led2를 P1_1 포트 제어로 정의 #define led3 P1_2 //define led3을 P1_2 포트 제어로 정의 #define led4
P1_3 //define led4를 P1_3 포트 제어로 정의합니다.

(4) 메인 함수

다음으로 메인 함수 작성을 시작합니다.

우선 P1.0~P1.4 포트를 사용하기 전에 작동 모드와 입출력 방향을 설정해야 하는데, 여기에는 P1SEL, P1DIR이라는 두 개의 SFR이 포함됩니다.


P1SEL = 0x00; //Set P1을 일반 입출력 포트로 설정 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 포트가 있습니다. 범용 디지털 I/O로 사용하거나 ADC, 타이머/카운터 또는 USART와 같은 주변 장치 I/O를 연결하는 데 사용할 수 있습니다.
CC2430의 SFR에는 이러한 IO 포트를 구성하는 데 사용할 수 있는 세 가지 유형의 레지스터가 있습니다:
PxSEL (x는 0/1/2): P0/P1/P2 포트 기능 선택
PxSEL(x는 0/1/2): P0/P1/P2 포트 기능 선택 0: 범용 디지털 IO, 1: 주변 장치 IO, 기본값은 0입니다.
PxDIR (x는 0/1/2): P0/P1/P2 포트 방향 선택
& 0: 입력, 1: 출력, 기본값은 0입니다.
PxINP (x는 0/1): P0/P1 포트 입력 모드
0: 업, 1: 출력, 기본값 기본값 0 0: 풀업/다운, 1: 트라이 스테이트, 기본값은 0
IO 포트를 사용할 때는 구성이 필요하며, 기본값인 경우 시스템 기본값을 사용합니다.

그런 다음 4개의 LED를 초기화하여 모두 꺼짐으로 설정합니다:




LED1 = 1; LED2 = 1; LED3 = 1; LED4 = 1.

마지막으로 LED 깜박임 효과 코드를 작성합니다:






led1 = 0; //led1 깜박임 Delay(10); led1 = 1; Delay(10); led2




= 0; //led2 깜박임 Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 깜박임 Delay(10); /.





//led3 깜박임 Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 깜박임 & ?


Delay(10); led4 = 1; Delay(10);


여기에는 지연 하위 함수 Delay(부호 없는 문자 n)가 포함됩니다:





v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++) &nbsp


f or(j = 1; j; j++) ; }

(5) 코드 개요

위의 코드를 전체적으로 합치면 아래와 같습니다:

//헤더 파일 도입
# include // CC2430에 해당하는 헤더 파일(각 SFR의 정의 포함)을 삽입합니다.

// LED 핀을 정의합니다.
# define led1 P1_0 //P1_0 포트 제어를 위한 LED1을 정의합니다.
# define led2 P1_1 // LED2를 P1_1 포트 제어로 정의합니다.
#define led3 P1_2 // LED3을 P1_2 포트 제어로 정의
# define led4 P1_3 // LED4를 P1_3 포트 제어 // 지연 서브루틴으로 정의합니다.
void Delay (unsigned char n) {
부호 없는 문자 i.
부호 없는 int j.
for (i = 0; i < n; i++)
for (j = 1; j; j++)
;
}

void main (void )
{
P1SEL = 0x00; //Set P1을 일반 I/O 포트로 설정합니다.
P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3을 출력으로 설정합니다.

LED1 = 1; //초기화, 4개의 LED 모두 꺼짐
led2 = 1; //초기화, 4개의 LED 모두 꺼짐
LED3 = 1; LED4 = 1; //초기화, 4개의 LED 모두 꺼짐
LED2 = 1; LED3 = 1; LED4 = 1; //초기화, 4개 LED 모두 꺼짐

while(1 ) //주기 시작
{
led1 = 0; //led1 깜박임
Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 )
delay(10); led1 = 1; //led1 깜박임
Delay (10 ).

led2 = 0; //led2가 깜박임
Delay (10 ); led2 = 1; //led2 깜박임
led2 = 1; //led2 깜박임
Delay (10 ).

led3 = 0; //led3 깜박임
Delay (10 ); led3 = 1; //led3 깜박임
led3 = 1; //led3가 깜박임
Delay (10 ).

led4 = 0; //led4가 깜박입니다.
Delay (10 ); led4 = 1; //led4 깜박임
led4 = 1; //led4가 깜박입니다.
Delay (10 ); //Delay (10 )
}
}

자, 이 작은 실험을 위한 코드가 작성되었습니다, 그리 간단하지 않네요 아, 헤헤~!

넷째, 컴파일 및 디버깅

프로젝트 -> 만들기에서 코드를 컴파일하고 성공하면 다음과 같은 출력이 나타납니다:

2011021320413789.jpg
c

지그비 개발 보드 → 디버거 → PC의 USB 포트 순서로 지그비 장치를 연결한 후 프로젝트 -> 디버그를 선택하면 프로그램이 자동으로 개발 보드에 다운로드됩니다.

그런 다음 디버그 -> 실행을 선택하여 프로그램을 시작하면 4개의 LED가 순차적으로 깜빡이는 것을 볼 수 있습니다! 비록 간단한 작은 실험이지만, 성공했을 때, 혹은 작은 흥분 ~ 허!

V. 결론

이 논문에서는 IAR의 구성, 프로그램 코드의 준비, 컴파일 및 디버깅 프로세스에서 각각 기초로 "LED 조명 깜박임 실험"이 전체 구현 프로세스를 소개합니다. 다음 편에서는 타이머, 시리얼 통신, AD 변환, 시스템 슬립 및 워치독 등과 관련된 여러 CC2430 개발의 기본 실험 소개를 바탕으로 개발 절차의 기본 과정을 이해할 예정이니 기대해 주세요!






이전: [참고] 지그비 여정 (I): 세상의 시작
다음: [보고서]지그비 여정 (III) : 몇 가지 중요한 CC2430 기본 실험 - 외부 인터럽트
코드 파머 네트워크는 연습 과정에서만 게시되었으며 기술적 인 어려움이 발생했으며 다른 사람들을 오도하지 마십시오.
로그인해야 다시 게시할 수 있습니다 로그인하기 | 등록하기

이 버전의 통합 규칙 댓글 달기


면책 조항: 코드파머에서 제공하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용하도록 제한되며, 위 내용을 상업적 또는 불법적인 목적으로 사용할 경우 모든 결과는 사용자 본인이 부담해야 합니다. 네트워크에서 제공하는 사이트 정보, 저작권 분쟁은 본 사이트와 무관합니다. 다운로드 후 24시간 이내에 컴퓨터에서 위의 콘텐츠를 완전히 삭제해야 합니다. 프로그램이 마음에 들면 정품 소프트웨어를 지원하고 등록을 구입하여 더 나은 정품 서비스를 받으십시오. 침해가 있는 경우 이메일로 연락하여 처리해 주시기 바랍니다.

메일 To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|사이트맵

GMT+8, 2024-9-17 14:48

빠른 답글맨 위로 돌아가기목록으로 돌아가기