| I. Att ta vid där vi slutade I den föregående artikeln , "Zigbee Journey (I): The Beginning", introducerade vi kort Zigbee och dess utvecklingsmiljö, OK, nu när verktygen är kompletta uppstår en fråga: hur använder man programvaran och hårdvaran för att skriva ett program som kan köras? Den här artikeln är i grunden att svara på ovanstående fråga: till "LED-ljus blinkar" som ett exempel på ett litet experiment, hur man konfigurerar IAR för utveckling av CC2430-baserade program, hur man använder IAR för att skriva och felsöka programmet online. Konfiguration av IAR IAR är en kraftfull inbäddad utvecklingsplattform som stöder många typer av chips, och varje projekt i IAR kan ha sin egen konfiguration, inklusive enhetstyp, Heap/Stack, Linker, Debugger, etc. (1) Ny arbetsyta och nytt projekt Först och främst skapar du en ny mapp ledtest, öppnar IAR, väljer huvudmenyn File -> New -> Workspace för att skapa en ny arbetsyta. Välj Project -> Create New Project -> Empty Project, klicka på OK och spara projektfilen i mappen ledtest, med namnet: ledtest.ewp (enligt nedan). (2) Konfigurera allmänna alternativ Målinställning: Enhet: CC2430; Kodläge: Nära; Datamodell: Stor; Anropskonvention: XDATA stack reetrant
Inställning av datapekare: Antal DPTR: 1
Stack/Heap-inställning: XDATA stackstorlek: 0x1FF (3) Inställningar för Linker Linker-kommandofilen: select lnk51ew_cc2430.xcl
(4) Inställningar för felsökare: Drivrutin: Texas Instruments (detta experiment för den verkliga maskinen felsökning, så välj TI; om andra förfaranden för att använda IAR-emulatorn, valfri Simulator) Enhet Filbeskrivning: CC2430.ddf
Vid denna tidpunkt är IAR-konfigurationen för detta experiment i princip över, följande för att introducera dess kodningsimplementering. För det tredje, förberedelse av programkoden(1) Ny programfil Välj Fil->Ny->Fil, skapa en ny fil main.c. (2) Introducera huvudfiler CC2430-baserade program måste innehålla en hänvisning till ioCC2430.h, som definierar adressmappningen för de olika typerna av specialfunktionsregister (SFR) för CC2430. #include //Introducera huvudfilen som motsvarar CC2430 (innehåller definitionen av varje SFR) Den här filen är inbyggd i IAR (liknar stdio.h), musen till den här kodraden, högerklicka, välj OPen "ioCC2430.h", du kan se hela innehållet i den här huvudfilen . (3) Definiera LED-pinnarna Kontrollera kretsschemat för utvecklingskortet, som visas nedan:
Det är känt att led1~4 styrs av stiften P1_0~P4_0 respektive, så vi kan definiera led1, led2, led3, led4 som stiften P1_0, P2_0, P3_0, P4_0 respektive. #definiera led1 P1_0 //definiera LED1 som P1_0 portkontroll #definiera led2 P1_1
//definiera led2 som P1_1 portkontroll #definiera led3 P1_2 //definiera led3 som P1_2 portkontroll #definiera led4 P1_3 //definiera led4 för P1_3-portkontroll (4) Huvudfunktion Därefter börjar vi skriva huvudfunktionen. Först och främst, innan du använder P1.0~P1.4-portarna måste du ställa in dess arbetsläge och ingångs-/utgångsriktning, vilket innebär två SFR: P1SEL, P1DIR. P1SEL = 0x00; //Sätt P1 som en vanlig I/O-port P1DIR |= 0x0F; & nbsp; //Sätt P1.0 P1.1 P1.2 P1.3 som utgångar Tips för Zigbee CC2430 har P0_0 ~ P0_7, P1_0~P1_7 , P2_0~P2_7 totalt 21 I/O-portar. De kan användas som allmänna digitala I/O eller för anslutning av perifera IO:er som ADC, timer/counter eller USART. Det finns tre typer av register i SFR på CC2430 som kan användas för att konfigurera dessa IO-portar: ①PxSEL (x är 0/1/2): val av P0/P1/P2-portfunktion PxSEL (x är 0/1/2): Funktionsval för P0/P1/P2-port nbsp;0: digital IO för allmänt ändamål, 1: perifer IO, standardstandard är 0 ② PxDIR (x är 0/1/2): P0/P1/P2-portens riktning & nbsp;0: ingång, 1: utgång, standardstandard är 0 ③PxINP (x är 0/1): P0/P1-portens ingångsläge 0: upp, 1: utgång, standardinställning 0 nbsp;0: pull-up/down, 1: tri-state, standardstandard är 0 Konfiguration krävs när du använder IO-port, om standard, ta då systemets standard. Initialisera sedan de 4 lysdioderna, sätt dem till alla ut:
led1 = 1; led2 = 1; led3 = 1; led4 = 1. Slutligen skriver du koden för LED-blinkande effekt:
led1 = 0; //led1 blinkar Fördröjning(10); led1 = 1; Fördröjning(10); led2
= 0; //led2 blinkar Delay(10); led2 = 1; Delay(10); led3 = 0; //led3 blinkar Delay(10); /
//led3 blinkar Delay(10); led3 = 1; Delay(10); led4 = 0; //led4 blinkar &
nbsp; Fördröjning(10); led4 = 1; Fördröjning(10);
Detta innebär en fördröjningsunderfunktion 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) Översikt över koden Kombinera ovanstående kod som en helhet enligt nedan: //Introducera huvudfiler #include //introducera headerfilen som motsvarar CC2430 (inklusive definitionen av varje SFR)
// Definiera LED-pinnarna #define led1 P1_0 //define LED1 för P1_0-portstyrning #definiera led2 P1_1 //definiera LED2 som P1_1-portkontroll #define led3 P1_2 //define LED3 as P1_2 port control #define led4 P1_3 //define LED4 för P1_3-portstyrning //delay subroutin void Delay (unsigned char n) { unsigned char i. osignerad int j. for (i = 0; i < n; i++) for (j = 1; j; j++) ; }
void main (void) { P1SEL = 0x00; //Sätt P1 som normal I/O-port P1DIR |= 0x0F; //Sätt P1.0 P1.1 P1.2 P1.3 som utgångar led1 = 1; //initialisera, alla 4 led-lampor släckta led2 = 1; //initialisera, alla 4 ledlampor släckta led3 = 1; led4 = 1; //initialisera, alla 4 led släckta led2 = 1; led3 = 1; led4 = 1; //initialisera, alla 4 ledlampor släckta while(1 ) //starta cykel { led1 = 0; //led1 blinkar Fördröjning (10 ); //Fördröjning (10 ); //Fördröjning (10 ); //Fördröjning (10 ) fördröjning(10); led1 = 1; //led1 blinkar Fördröjning (10). led2 = 0; //led2 blinkar Fördröjning (10 ); led2 = 1; //led2 blinkar led2 = 1; //led2 blinkar Fördröjning (10 ). led3 = 0; //led3 blinkar Fördröjning (10 ); led3 = 1; //led3 blinkar led3 = 1; //led3 blinkar Fördröjning (10 ). led4 = 0; //led4 blinkar Fördröjning (10 ); led4 = 1; //led4 blinkar led4 = 1; //led4 blinkar Fördröjning (10 ); //Fördröjning (10 ) } }
OK, koden för detta lilla experiment är skrivet, är inte särskilt enkelt ah, hehe~! Fjärde, kompilera och felsöka Välj Project -> Make, kompilera koden, om det lyckas kommer följande utdata att visas:
c
Anslut Zigbee-enheten i ordningen Zigbee-utvecklingskort → Debugger → PC: s USB-port, och välj sedan Project -> Debug, programmet laddas ner till utvecklingskortet automatiskt. Välj sedan Debug -> Go för att starta programmet, och du kommer att se de 4 lysdioderna blinka i följd! Även om detta är en enkel kan inte vara mer enkla små experiment, men när jag lyckades uppnå det, eller en liten upphetsad ~ huh! V. Slutsats I det här dokumentet introducerar "LED-ljusblinkande experiment" som grund, respektive från konfigurationen av IAR, förberedelsen av programkoden, liksom sammanställnings- och felsökningsprocessen hela implementeringsprocessen. Nästa, det kommer att vara i förståelsen av den grundläggande processen för utvecklingsförfaranden baserade på införandet av flera CC2430 utveckling av grundläggande experiment som involverar timers, seriell kommunikation, AD-konvertering, system sömn och vakthund , etc., så håll ögonen öppna! |