Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 9158|Svare: 0

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

[Kopier lenke]
Publisert på 30.10.2014 23:15:39 | | | |
1. Sammenkobling av øvre og nedre nivåer

     I forrige artikkelZigbee Journey (1): Å bryte grunnlaget, introduserer vi kort Zigbee og dets utviklingsmiljø. OK, nå som verktøyene er ferdige, oppstår et spørsmål: hvordan bruke denne programvaren og maskinvaren til å skrive et program som kan kjøre?

     Denne artikkelen er i hovedsak for å svare på spørsmålene ovenfor: Ta det lille eksperimentet med «LED-lysblinking» som et eksempel for å introdusere hvordan man konfigurerer IAR til å være egnet for utvikling av CC2430-baserte programmer, og hvordan man bruker detIARSkriv og feilsøk programmer online.

2. IAR-konfigurasjon

     IAR er en kraftig innebygd utviklingsplattform som støtter et bredt utvalg av brikker. Hvert prosjekt i IAR kan ha sin egen konfigurasjon, inkludert enhetstype, stakk/stakk, lenker, feilsøker osv.

(1) Opprett et nytt arbeidsområde og prosjekt

     Først, opprett en ny mappe-ledtest. Åpne IAR og velg hovedmenyen Fil -> Nytt -> Arbeidsområde for å opprette et nytt arbeidsområde.

     Velg Project -> Create New Project -> Empty Project, klikk OK, og lagre prosjektfilen i mappen ledtest, kalt ledtest.ewp (som vist nedenfor).

(2) Konfigurer generelle alternativer

       Målsetting: Enhet: CC2430;

                         Kodemodus: Nær;

                         Datamodell: Stor;

                         Kallekonvensjon:XDATA-stakk reetrant

     Datapekerinnstilling: Antall DPTR-er: 1

     Stabel/Heap-innstilling: XDATA-stakkstørrelse: 0x1FF

(3) Linkerinnstillinger

     Linker-kommandofil: Velg lnk51ew_cc2430.xcl

(4) Debugger-innstillinger:

     Driver: Texas Instruments (Dette eksperimentet er en ekte maskinfeilsøking, så velg TI; Hvis andre programmer vil bruke IAR-simulatoren, kan du velge Simulator)
     Enhetsbeskrivelsesfil:CC2430.ddf

      På dette tidspunktet er IAR-konfigurasjonen for dette eksperimentet i praksis over, og følgende er en introduksjon til kodingsimplementeringen.

3. Skrive programkode(1) Opprette et nytt prosedyredokument

      Velg File->New->File og opprett en ny fil main.c.

(2) Introdusere header-filer

      CC2430-baserte programmer må inkludere en referanse til ioCC2430.h, som definerer adressekartleggingen av CC2430s ulike spesialfunksjonsregistre (SFR).

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

      Denne filen er innebygd i IAR (lik stdio.h), hold musepekeren over denne kodelinjen, høyreklikk, velgOPen "ioCC2430.h"for å se hele innholdet i denne headerfilen.

(3) Definer LED-pinnene

     Se kretsdiagrammet for utviklingskortet som følger:

     Det kan sees at LED1~4 styres av pinner P1_0~P4_0 henholdsvis, så LED1, LED2, LED3 og LED4 kan defineres som pinner P1_0, P2_0, P3_0 og P4_0 henholdsvis.

#define LED1 P1_0 // Definer LED1 som 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 // Definer LED4 som P1_3 portkontroll

(4) hovedfunksjon

     Deretter begynner du å skrive hovedfunksjonen.

     Først og fremst, før man bruker P1.0~P1.4-porten, er det nødvendig å sette arbeidsmodus og inn-/utgangsretning, noe som involverer to SFR-er: P1SEL og P1DIR.

  P1SEL = 0x00;          Sett P1 til den vanlige I/O-porten
  P1DIR |= 0x0F;          Sett P1.0, P1.1, P1.2, P1.3 som utgang

Zigbee-tips
CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Totalt 21 I/O-porter. De kan brukes som generelle digitale I/O-er eller brukes til å koble til perifere IO-er som ADC-er, timing/tellere eller USART-er.
Det finnes tre klasser av registre i CC2430s SFR som kan brukes til å konfigurere disse IO-portene:
(1)PxSEL(x er 0/1/2) :P 0/P1/P2 portfunksjonsvalg
                                0: Universell numerisk IO, 1: Perifer IO, standard er 0
(2)PxDIR(x er 0/1/2) :P 0/P1/P2 portretning
                                0: input, 1: output, standard er 0
(3)PxINP(x er 0/1) :P 0/P1-port inngangsmodus
                                0: Pull up/pull down, 1: Tre tilstander, standard er 0
Den må konfigureres når IO-porten brukes, og hvis den er standard, tas systemets standardverdi.

     Deretter initialiserer du de 4 LED-ene og setter dem til å slukke alle:

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

     Til slutt, 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-blink
    Forsinkelse(10);
    led4 = 1;
    Forsinkelse(10);


     Den involverer en forsinkelsesdelfunksjon Delay (usignert tegn n):

ugyldig forsinkelse (usignert tegn n)  {
  usignert Char I;
  Usignert Int J;
  for(i = 0; I < N; i++)
    for(j = 1; j; j++)
    ;
}   


(5) Kodeoversikt

      Kombiner koden ovenfor til én helhet, 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口控制 //延时子程序
TomromForsinkelse(Usignert Charn)  {
  Usignert Chari;
  Usignert Intj;
  for(i =0; I < N; i++)
    for(j =1; j; j++)
    ;
}

Tomromhoved(Tomrom)
{
  P1SEL =0x00;         Sett P1 til den vanlige I/O-porten
  P1DIR |=0x0F;         Sett P1.0, P1.1, P1.2, P1.3 som utgang
  
  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 for dette lille eksperimentet er skrevet, er det ikke veldig enkelt, hehe~

4. Kompilering og feilsøking

     Velg Prosjekt -> Lag, kompiler koden, og hvis det lykkes, vil følgende utdata vises:

     PresseZigbee Development Board → Debugger → USB-grensesnitt for PCog velg deretter Project -> Debug, og programmet vil automatisk bli lastet ned til brettet.

     Velg deretter Debug -> Go for å starte programmet, og du vil se 4 LED-lys blinke etter tur! Selv om dette er et lite eksperiment som er for enkelt til å være enkelt, ble jeg fortsatt litt spent da forfatteren klarte det~ hehe!

5. Konklusjon

     Basert på "LED-lysblinkeksperimentet" introduserer denne artikkelen hele implementeringsprosessen fra konfigurasjonen av IAR, skriving av programkode, og prosessen med kompilering og feilsøking. I neste artikkel, basert på forståelsen av den grunnleggende prosessen med å utvikle programmet, vil vi introdusere flere grunnleggende eksperimenter for utvikling av CC2430TimerSeriell kommunikasjonAD-konverteringSystematisk søvn så vel som vakthunderosv., så følg med!






Foregående:Zigbee-reisen (1): Å bryte grunnen
Neste:Zigbee Journey (3): Flere viktige CC2430 grunnleggende eksperimenter – ekstern avbrudd
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com