| I. Să reluăm de unde am rămas În articolul anterior , "Zigbee Journey (I): The Beginning", am prezentat pe scurt Zigbee și mediul său de dezvoltare, OK, acum că instrumentele sunt complete, apare o întrebare: cum să utilizați software-ul și hardware-ul pentru a scrie un program care poate rula? Acest articol este, în principiu, pentru a răspunde la întrebarea de mai sus: la "LED lumina clipește" ca un exemplu de un mic experiment, cum să configurați IAR pentru dezvoltarea de programe bazate pe CC2430, cum să utilizați IAR pentru a scrie și depanarea programului online. Configurarea IAR IAR este o platformă puternică de dezvoltare embedded care suportă multe tipuri de cipuri, iar fiecare proiect din IAR poate avea propria sa configurație, inclusiv tipul de dispozitiv, Heap/Stack, Linker, Debugger etc. (1) Spațiu de lucru și proiect nou Mai întâi de toate, creați un folder nou ledtest, deschideți IAR, selectați meniul principal File -> New -> Workspace pentru a crea un nou spațiu de lucru. Selectați Project -> Create New Project -> Empty Project, faceți clic pe OK și salvați fișierul de proiect în folderul ledtest, denumit ca: ledtest.ewp (ca mai jos). (2) Configurarea opțiunilor generale Setare țintă: Dispozitiv: CC2430; Mod cod: Aproape; Model de date: Mare; Convenție de apelare: XDATA stack reetrant
Setare pointer de date: Număr de DPTR-uri: 1
Setarea stivei/Heap: Dimensiunea stivei XDATA: 0x1FF (3) Setări pentru Linker Fișier de comandă Linker: select lnk51ew_cc2430.xcl
(4) Setările debuggerului: Driver: Texas Instruments (acest experiment pentru depanarea mașinii reale, deci alegeți TI; dacă alte proceduri pentru a utiliza emulatorul IAR, Simulator opțional) Dispozitiv Fișier de descriere: CC2430.ddf
În acest moment, configurarea IAR pentru acest experiment este practic încheiată, urmând să introducem implementarea codului său. În al treilea rând, pregătirea codului programului(1) Fișier de program nou Alegeți File->New->File, creați un nou fișier main.c. (2) Introduceți fișierele de antet Programele bazate pe CC2430 trebuie să includă o referință la ioCC2430.h, care definește maparea adreselor diferitelor tipuri de registre cu funcții speciale (SFR) ale CC2430. #include //Introduceți fișierul antet corespunzător CC2430 (conține definiția fiecărui SFR) Acest fișier este încorporat în IAR (similar cu stdio.h), mouse-ul la această linie de cod, faceți clic dreapta, selectați OPen "ioCC2430.h", puteți vedea conținutul complet al acestui fișier antet. (3) Definiți pinii LED Verificați schema de circuit a plăcii de dezvoltare, după cum se arată mai jos:
Se știe că led1~4 sunt controlate de pinii P1_0~P4_0 respectiv, deci putem defini led1, led2, led3, led4 ca pinii P1_0, P2_0, P3_0, P4_0 respectiv. #define led1 P1_0 //define LED1 ca port de control P1_0 #define led2 P1_1
//define led2 as P1_1 port control #define led3 P1_2 //define led3 as P1_2 port control #define led4 P1_3 //define led4 pentru controlul portului P1_3 (4) Funcția principală În continuare, începeți să scrieți funcția principală. În primul rând, înainte de a utiliza porturile P1.0~P1.4, trebuie să setați modul său de lucru și direcția de intrare/ieșire, care implică două SFR-uri: P1SEL, P1DIR. P1SEL = 0x00; //Set P1 ca port I/O obișnuit P1DIR |= 0x0F; & nbsp; //Set P1.0 P1.1 P1.2 P1.3 ca ieșiri Sfaturi Zigbee CC2430 are P0_0 ~ P0_7, P1_0~P1_7, P2_0~P2_7 în total 21 porturi I/O. Acestea pot fi utilizate ca I/O digitale de uz general sau pentru conectarea IO-urilor periferice, cum ar fi ADC, timer/contor sau USART. Există trei tipuri de registre în SFR al CC2430 care pot fi utilizate pentru a configura aceste porturi IO: ①PxSEL (x este 0/1/2): Selectarea funcției portului P0/P1/P2 PxSEL (x este 0/1/2): selectarea funcției portului P0/P1/P2 nbsp;0: IO digitală de uz general, 1: IO periferică, implicit este 0 ② PxDIR (x este 0/1/2): direcția portului P0/P1/P2 & nbsp;0: intrare, 1: ieșire, valoarea implicită este 0 ③PxINP (x este 0/1): Mod intrare port P0/P1 0: sus, 1: ieșire, implicit 0 nbsp;0: pull-up/down, 1: tri-state, implicit este 0 Configurarea este necesară atunci când se utilizează portul IO, dacă este implicită, atunci luați valoarea implicită a sistemului. Apoi inițializați cele 4 LED-uri, setați-le la toate stinse:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. În cele din urmă, scrieți codul efectului de clipire a LED-urilor:
led1 = 0; //led1 clipește Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 clipește Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 clipește Delay(10); /
//led3 clipește Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 clipește &
nbsp; Delay(10); led4 = 1; Delay(10);
Aceasta implică o subfuncție de întârziere Delay(unsigned char n):
v oid Delay(unsigned char n) { unsigned char i; unsigned int j; for(i = 0; i < n; i++)  
; for(j = 1; j; j++) ; } (5) Prezentare generală a codului Combinați codul de mai sus ca un întreg, după cum se arată mai jos: //Introduceți fișierele de antet #include //introduceți fișierul antet corespunzător CC2430 (inclusiv definiția fiecărui SFR)
// Definirea pinilor LED #define led1 P1_0 //define LED1 pentru controlul portului P1_0 #define led2 P1_1 //define LED2 pentru controlul portului P1_1 #define led3 P1_2 //define LED3 ca P1_2 control port #define led4 P1_3 //define LED4 pentru controlul portului P1_3 //delay subroutine void Delay (unsigned char n) { unsigned char i. unsigned int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void ) { P1SEL = 0x00; //Set P1 ca port I/O normal P1DIR |= 0x0F; //Set P1.0 P1.1 P1.2 P1.3 ca ieșiri led1 = 1; //inițializare, toate cele 4 leduri stinse led2 = 1; //inițializare, toate cele 4 led-uri stinse led3 = 1; led4 = 1; //inițializare, toate cele 4 leduri stinse led2 = 1; led3 = 1; led4 = 1; //inițializare, toate cele 4 leduri stinse while(1 ) //începe ciclul { led1 = 0; //led1 clipește Delay (10 ); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 clipește Delay (10 ). led2 = 0; //led2 clipește Delay (10 ); led2 = 1; //led2 clipește led2 = 1; //led2 clipește Delay (10 ). led3 = 0; //led3 clipește Delay (10 ); led3 = 1; //led3 clipește led3 = 1; //led3 clipește Delay (10 ). led4 = 0; //led4 clipește Delay (10 ); led4 = 1; //led4 clipește led4 = 1; //led4 clipește Delay (10 ); //Delay (10 ) } }
OK, codul pentru acest mic experiment este scris, nu este foarte simplu ah, hehe~! În al patrulea rând, compilarea și depanarea Selectați Project -> Make, compilați codul, dacă reușiți, va apărea următoarea ieșire:
c
Conectați dispozitivul Zigbee în ordinea Placa de dezvoltare Zigbee → Debugger → Portul USB al PC-ului , apoi selectați Project -> Debug, programul va fi descărcat automat în placa de dezvoltare. Apoi selectați Debug -> Go pentru a porni programul și veți vedea cele 4 LED-uri clipind în succesiune! Deși acesta este un simplu nu poate fi mai simplu experimente mici, dar când am reușit să-l realizeze, sau un mic excitat ~ huh! V. Concluzie În această lucrare, "experimentul de clipire a luminii LED" ca bază, respectiv, de la configurarea IAR, pregătirea codului programului, precum și procesul de compilare și depanare introduce întregul proces de implementare. Următorul, va fi în înțelegerea procesului de bază al procedurilor de dezvoltare pe baza introducerii mai multor CC2430 de dezvoltare a experimentelor de bază care implică temporizatoare, comunicații seriale, conversie AD, sistem de somn și watchdog , etc., deci rămâneți pe recepție! |