| I. Vi fortsetter der vi slapp I den forrige artikkelen , "Zigbee Journey (I): The Beginning", introduserte vi kort Zigbee og utviklingsmiljøet, OK, nå som verktøyene er komplette, oppstår det et spørsmål: hvordan bruker man programvaren og maskinvaren til å skrive et program som kan kjøre? Denne artikkelen er i utgangspunktet å svare på spørsmålet ovenfor: til "LED-lys blinker" som et eksempel på et lite eksperiment, hvordan du konfigurerer IAR for utvikling av CC2430-baserte programmer, hvordan du bruker IAR til å skrive og feilsøke programmet på nettet. Konfigurasjon av IAR IAR er en kraftig innebygd utviklingsplattform som støtter mange typer chips, og hvert prosjekt i IAR kan ha sin egen konfigurasjon, inkludert enhetstype, Heap/Stack, Linker, Debugger osv. (1) Nytt arbeidsområde og prosjekt Først av alt, opprett en ny mappe ledtest, åpne IAR, velg hovedmenyen Fil -> Ny -> Arbeidsområde for å opprette et nytt arbeidsområde. Velg Prosjekt -> Opprett nytt prosjekt -> Tomt prosjekt, klikk OK, og lagre prosjektfilen i mappen ledtest, navngitt som: ledtest.ewp (som nedenfor). (2) Konfigurer generelle alternativer Målinnstilling: Enhet: CC2430; Kodemodus: Nær; Datamodell: Large; Konvensjon for oppkalling: XDATA stack reetrant
Datapekerinnstilling: Antall DPTR-er: 1
Stack/Heap-innstilling: XDATA-stakkstørrelse: 0x1FF (3) Linker-innstillinger Linker-kommandofil: select lnk51ew_cc2430.xcl
(4) Innstillinger for feilsøking: Driver: Texas Instruments (dette eksperimentet for den virkelige maskinen feilsøking, så velg TI; hvis andre prosedyrer for å bruke IAR emulator, valgfri Simulator) Device Beskrivelse fil: CC2430.ddf
På dette tidspunktet er IAR-konfigurasjonen for dette eksperimentet i utgangspunktet over, det følgende for å introdusere kodingsimplementeringen. For det tredje, utarbeidelsen av programkoden(1) Ny programfil Velg Fil-> Ny-> Fil, opprett en ny fil main.c. (2) Innfør header-filer CC2430-baserte programmer må inneholde en referanse til ioCC2430.h, som definerer adressetilordningen til de ulike typene spesialfunksjonsregistre (SFR) på CC2430. #include //Innfør header-filen som svarer til CC2430 (inneholder definisjonen av hvert SFR) Denne filen er innebygd i IAR (ligner på stdio.h), musen til denne kodelinjen, høyreklikk, velg OPen "ioCC2430.h", kan du se hele innholdet i denne headerfilen . (3) Definer LED-pinnene Sjekk kretsskjemaet til utviklingskortet, som vist nedenfor:
Det er kjent at led1 ~ 4 styres av pinnene P1_0 ~ P4_0 henholdsvis, så vi kan definere led1, led2, led3, led4 som pinner P1_0, P2_0, P3_0, P4_0 henholdsvis. #define led1 P1_0 //define LED1 som P1_0 portkontroll #define led2 P1_1
//define led2 som P1_1 portkontroll #define led3 P1_2 //define led3 som P1_2 portkontroll #define led4 P1_3 //definer led4 for P1_3-portkontroll (4) Hovedfunksjon Deretter begynner du å skrive hovedfunksjonen. Først og fremst må du konfigurere arbeidsmodus og inngangs-/utgangsretning før du bruker P1.0~P1.4-portene, noe som involverer to SFR-er: P1SEL, P1DIR. P1SEL = 0x00; //Sett P1 som en vanlig I/U-port P1DIR |= 0x0F; & nbsp; //Sett P1 som en vanlig I/U-port nbsp; //Sett P1.0 P1.1 P1.2 P1.3 som utganger Zigbee-tips CC2430 har P0_0 ~ P0_7, P1_0 ~ P1_7 , P2_0 ~ P2_7 totalt 21 I / O-porter . De kan brukes som generelle digitale I/O-er eller for tilkobling av perifere IO-er som ADC, timer/teller eller USART. Det finnes tre typer registre i SFR på CC2430 som kan brukes til å konfigurere disse IO-portene: ①PxSEL (x er 0/1/2): Valg av P0/P1/P2-portfunksjon PxSEL (x er 0/1/2): Valg av P0/P1/P2-portens funksjon nbsp;0: generell digital IO, 1: perifer IO, standard er 0 ② PxDIR (x er 0/1/2): P0/P1/P2-portens retning & nbsp;0: inngang, 1: utgang, standard standard er 0 ③PxINP (x er 0/1): P0/P1-portinngangsmodus 0: opp, 1: utgang, standard standard 0 nbsp;0: pull-up/down, 1: tri-state, standard er 0 Konfigurasjon er nødvendig når du bruker IO-porten, hvis standard, så ta systemstandarden. Initialiser deretter de 4 lysdiodene, sett dem til alle ut:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Til slutt skriver du koden for LED-blinkende effekt:
led1 = 0; //led1 blinker Delay(10); led1 = 1; Delay(10); led2
= 0; //led2 blinker Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinker Delay(10); / //led3 blinker Delay(10); /
//led3 blinker Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 blinker &
nbsp; Delay(10); led4 = 1; Delay(10);
Dette innebærer en forsinkelsesunderfunksjon 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) Oversikt over koden Kombiner koden ovenfor som en helhet som vist nedenfor: //Introduksjon av header-filer #include //introduser headerfilen som tilsvarer CC2430 (inkludert definisjonen av hver SFR)
// Definer LED-pinnene #define led1 P1_0 //definer LED1 for P1_0-portkontroll #define led2 P1_1 //definer LED2 som P1_1-portkontroll #define led3 P1_2 //definer LED3 som P1_2-portkontroll #define led4 P1_3 //define LED4 for P1_3-portkontroll //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; //Sett P1 som normal I/O-port P1DIR |= 0x0F; //Sett P1.0 P1.1 P1.2 P1.3 som utganger led1 = 1; //initialiser, alle 4 led-lysene er av led2 = 1; //initialiser, alle 4 led-lysene er av led3 = 1; led4 = 1; //initialiser, alle 4 led-lysene av led2 = 1; led3 = 1; led4 = 1; //initialiser, alle 4 led-lysene av while(1 ) //start syklus { led1 = 0; //led1 blinker Delay (10); //Delay (10 ); //Delay (10 ); //Delay (10 ) delay(10); led1 = 1; //led1 blinker Delay (10). led2 = 0; //led2 blinker Delay (10); led2 = 1; //led2 blinker led2 = 1; //led2 blinker Delay (10). led3 = 0; //led3 blinker Delay (10); led3 = 1; //led3 blinker led3 = 1; //led3 blinker Delay (10). led4 = 0; //led4 blinker Delay (10); led4 = 1; //led4 blinker led4 = 1; //led4 blinker Delay (10 ); //Delay (10 ) } }
OK, koden for dette lille eksperimentet er skrevet, er ikke veldig enkelt ah, hehe~! Fjerde, kompilere og feilsøking Velg Project -> Make, kompiler koden, hvis det lykkes, vises følgende utdata:
c
Koble til Zigbee-enheten i rekkefølgen Zigbee-utviklingskort → Debugger → PC-ens USB-port, og velg deretter Prosjekt -> Debug, programmet lastes automatisk ned til utviklingskortet. Velg deretter Debug -> Go for å starte programmet, og du vil se de 4 lysdiodene blinke i rekkefølge! Selv om dette er en enkel kan ikke være mer enkle små eksperimenter, men når jeg lyktes i å oppnå det, eller en liten spent ~ huh! V. Konklusjon I denne artikkelen, "LED lys blinkende eksperiment" som grunnlag, henholdsvis fra konfigurasjonen av IAR, utarbeidelse av programkoden, samt kompilering og feilsøkingsprosessen introduserer hele implementeringsprosessen. Den neste, vil det være i forståelsen av den grunnleggende prosessen med utviklingsprosedyrer basert på innføring av flere CC2430 utvikling av grunnleggende eksperimenter som involverer tidtakere, seriell kommunikasjon, AD konvertering, system søvn og vakthund , etc., så følg med! |