Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 9158|Svar: 0

Zigbee Journey (2): Det første CC2430-program - LED-lysblinkeksperiment

[Kopier link]
Opslået på 30/10/2014 23.15.39 | | | |
1. Forbindelse mellem øvre og nedre niveauer

     I den forrige artikelZigbee-rejsen (1): At bryde vejen ned, introducerer vi kort Zigbee og dets udviklingsmiljø. OK, nu hvor værktøjerne er færdige, opstår et spørgsmål: hvordan bruger man denne software og hardware til at skrive et program, der kan køre?

     Denne artikel er grundlæggende for at besvare ovenstående spørgsmål: Tag det lille eksperiment med "LED-lysblink" som eksempel for at introducere, hvordan man konfigurerer IAR til at være egnet til udvikling af CC2430-baserede programmer, og hvordan man bruger detIARSkriv og fejlfind programmer online.

2. IAR-konfiguration

     IAR er en kraftfuld indlejret udviklingsplatform, der understøtter en bred vifte af chips. Hvert projekt i IAR kan have sin egen konfiguration, herunder enhedstype, stak/stak, linker, debugger osv.

(1) Opret et nyt arbejdsområde og projekt

     Først opretter du en ny mappe-ledtest. Åbn IAR og vælg hovedmenuen Fil -> Nyt -> Workspace for at oprette et nyt workspace.

     Vælg Projekt -> Opret nyt projekt -> Tomt projekt, klik OK, og gem projektfilen i mappen ledtest, kaldet ledtest.ewp (som vist nedenfor).

(2) Konfigurér generelle indstillinger

       Målindstilling: Enhed: CC2430;

                         Kodetilstand: Nær;

                         Datamodel: Stor;

                         Kaldekonvention: XDATA-stak reetrant

     Datapointerindstilling: Antal DPTR'er: 1

     Stak/Heap-indstilling: XDATA stakstørrelse: 0x1FF

(3) Linker-indstillinger

     Linker-kommandofil: Vælg lnk51ew_cc2430.xcl

(4) Debugger-indstillinger:

     Driver: Texas Instruments (Dette eksperiment er en rigtig maskin-fejlsøgning, så vælg TI; Hvis andre programmer vil bruge IAR-simulatoren, kan du vælge Simulator)
     Enhedsbeskrivelsesfil:CC2430.ddf

      På dette tidspunkt er IAR-konfigurationen for dette eksperiment stort set afsluttet, og følgende er en introduktion til dets kodningsimplementering.

3. Skrivning af programkode(1) Oprette et nyt proceduredokument

      Vælg File->New->File og opret en ny fil main.c.

(2) Introducer headerfiler

      CC2430-baserede programmer skal inkludere en reference til ioCC2430.h, som definerer adressekortlægningen af CC2430's forskellige specialfunktionsregistre (SFR'er).

#include         //引入CC2430所对应的头文件(包含各SFR的定义)

      Denne fil er indbygget i IAR (lignende stdio.h), hold musen over denne kodelinje, højreklik, vælgOPen "ioCC2430.h"for at se det fulde indhold af denne headerfil.

(3) Definer LED-benene

     Se udviklingskortets kredsløbsdiagram som følger:

     Det kan ses, at LED1~4 styres af ben P1_0~P4_0 henholdsvis, så LED1, LED2, LED3 og LED4 kan defineres som ben P1_0, P2_0, P3_0 og P4_0 henholdsvis.

#define LED1 P1_0 // Definér LED1 som P1_0 portkontrol
#define LED2 P1_1 // Definér LED2 som P1_1 portkontrol
#define LED3 P1_2 // Definér LED3 som P1_2 portkontrol
#define LED4 P1_3 // Definér LED4 som P1_3 portkontrol

(4) hovedfunktion

     Dernæst, begynd at skrive hovedfunktionen.

     Først og fremmest, før man bruger P1.0~P1.4-porten, er det nødvendigt at indstille dens arbejdstilstand og input/output-retning, hvilket involverer to SFR'er: P1SEL og P1DIR.

  P1SEL = 0x00;          Sæt P1 til den normale I/O-port
  P1DIR |= 0x0F;          Indstil P1.0, P1.1, P1.2, P1.3 som output

Zigbee-tips
CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7I alt 21 I/O-porte. De kan bruges som generelle digitale I/O'er eller til at forbinde perifere IO'er såsom ADC'er, timing/tællere eller USART'er.
Der er tre klasser af registre i CC2430's SFR, som kan bruges til at konfigurere disse IO-porte:
(1)PxSEL(x er 0/1/2) :P valg af 0/P1/P2-portfunktion
                                0: Universel numerisk IO, 1: Perifer IO, standard er 0
(2)PxDIR(x er 0/1/2) :P 0/P1/P2 portretning
                                0: input, 1: output, standarden er 0
(3)PxINP(x er 0/1) :P 0/P1 port indgangstilstand
                                0: Træk op/træk ned, 1: Tre tilstande, standard er 0
Den skal konfigureres, når IO-porten bruges, og hvis den er standard, tages systemets standardværdi.

     Initialiser derefter de 4 LED'er og sæt dem til alle at slukke:

  led1 = 1;   
  led2 = 1;
  led3 = 1;
  led4 = 1;

     Til sidst skriv LED-lysblinkende effektkoden:

    led1 = 0;  LED1 blinker
    Forsinkelse(10);
    led1 = 1;
    Forsinkelse(10);
   
    led2 = 0;  LED2 blinker
    Forsinkelse(10);
    led2 = 1;
    Forsinkelse(10);
   
    led3 = 0;  LED3 blinker
    Forsinkelse(10);
    led3 = 1;
    Forsinkelse(10);
   
    led4 = 0;  LED4 blinker
    Forsinkelse(10);
    led4 = 1;
    Forsinkelse(10);


     Det involverer en forsinkelsesunderfunktion Delay(unsigned char n):

ugyldig forsinkelse (usigneret tegn n)  {
  usigneret char i;
  usigneret int j;
  for(i = 0; I < N; i++)
    for(j = 1; j; j++)
    ;
}   


(5) Kodeoversigt

      Kombiner ovenstående kode til en samlet helhed som følger:

//引入头文件
#include         //引入CC2430所对应的头文件(包含各SFR的定义)

//定义LED引脚
#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口控制 //延时子程序
tomrumForsinkelse(Usigneret Charn)  {
  Usigneret CharJeg;
  Usigneret intj;
  for(i =0; I < N; i++)
    for(j =1; j; j++)
    ;
}

tomrumhoved(tomrum)
{
  P1SEL =0x00;         Sæt P1 til den normale I/O-port
  P1DIR |=0x0F;         Indstil P1.0, P1.1, P1.2, P1.3 som output
  
  led1 =1;   //初始化,4个led灯全熄
  led2 =1;
  led3 =1;
  led4 =1;
  
  mens(1)     //开始循环
  {
    led1 =0;  //led1闪烁
    Forsinkelse(10);
    led1 =1;
    Forsinkelse(10);
   
    led2 =0;  //led2闪烁
    Forsinkelse(10);
    led2 =1;
    Forsinkelse(10);
   
    led3 =0;  //led3闪烁
    Forsinkelse(10);
    led3 =1;
    Forsinkelse(10);
   
    led4 =0;  //led4闪烁
    Forsinkelse(10);
    led4 =1;
    Forsinkelse(10);
  }
}

     OK, koden til dette lille eksperiment er skrevet, er det ikke meget simpelt, hehe~

4. Kompilering og fejlfinding

     Vælg Projekt -> Lave, kompiler koden, og hvis det lykkes, vil følgende output vises:

     PresseZigbee Development Board → Debugger → USB-interface til PCog vælg derefter Projekt -> Debug, og programmet vil automatisk blive downloadet til boardet.

     Vælg derefter Debug -> Gå for at starte programmet, og du vil se 4 LED-lys blinke i rækkefølge! Selvom dette er et lille eksperiment, der er for simpelt til at være simpelt, var jeg stadig lidt begejstret, da forfatteren lykkedes med det~ hehe!

5. Konklusion

     Baseret på "LED-lysblinkeksperimentet" introducerer denne artikel hele implementeringsprocessen fra konfigurationen af IAR, skrivning af programkode og processen med kompilering og fejlfinding. I den næste artikel, baseret på forståelsen af den grundlæggende proces for at udvikle programmet, vil vi introducere flere grundlæggende eksperimenter for udvikling af CC2430TimerSeriel kommunikationAD-konverteringSystematisk søvn samt vagthundeosv., så følg med!






Tidligere:Zigbee-rejsen (1): At bryde jorden
Næste:Zigbee Journey (3): Flere vigtige CC2430 grundlæggende eksperimenter - ekstern afbrydelse
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com