Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9158|Antwoord: 0

Zigbee Journey (2): Het eerste CC2430-programma - LED-lichtflitsexperiment

[Link kopiëren]
Geplaatst op 30-10-2014 23:15:39 | | | |
1. Het verbinden van de boven- en benedenverdiepingen

     In het vorige artikelZigbee Reis (1): De grond breken, introduceren we kort Zigbee en de bijbehorende ontwikkelomgeving. Oké, nu de tools compleet zijn, rijst de vraag: hoe gebruik je deze software en hardware om een programma te schrijven dat kan draaien?

     Dit artikel is in wezen bedoeld om bovenstaande vragen te beantwoorden: Neem het kleine experiment van "LED-lichtknipperen" als voorbeeld om te introduceren hoe je IAR kunt configureren zodat het geschikt is voor het ontwikkelen van CC2430-gebaseerde programma's, en hoe je het gebruiktIARSchrijf en debug programma's online.

2. IAR-configuratie

     IAR is een krachtig embedded ontwikkelplatform dat een breed scala aan chips ondersteunt. Elk project in IAR kan zijn eigen configuratie hebben, waaronder apparaattype, stack/stack, linker, debugger, enzovoort.

(1) Een nieuwe werkruimte en project aanmaken

     Maak eerst een nieuwe map ledtest aan. Open IAR en selecteer het hoofdmenu Bestand -> Nieuw -> Werkruimte om een nieuwe werkruimte aan te maken.

     Selecteer Project -> Nieuw Project aanmaken -> Leeg Project, klik op OK en sla het projectbestand op in de map ledtest, genaamd ledtest.ewp (zoals hieronder weergegeven).

(2) Algemene opties configureren

       Doelwit: Apparaat: CC2430;

                         Codemodus: Nabij;

                         Datamodel: Groot;

                         Aanroepconventie:XDATA-stack reetrant

     Datapointerinstelling: Aantal DPTR's: 1

     Stack/Heap-instelling: XDATA-stackgrootte: 0x1FF

(3) Linker-instellingen

     Linker-commandobestand: Selecteer lnk51ew_cc2430.xcl

(4) Debugger-instellingen:

     Driver: Texas Instruments (Dit experiment is een echte machine debugging, dus kies TI; Als andere programma's de IAR-simulator willen gebruiken, kun je kiezen voor Simulator)
     Apparaatbeschrijvingsbestand:CC2430.ddf

      Op dit punt is de IAR-configuratie voor dit experiment in feite voorbij, en het volgende is een introductie tot de coderingsimplementatie.

3. Programmacode schrijven(1) Een nieuw procedureel document aanmaken

      Selecteer File->New->File en maak een nieuw bestand main.c.

(2) Introduceer headerbestanden

      CC2430-gebaseerde programma's moeten een verwijzing bevatten naar ioCC2430.h, die de adresmapping van de verschillende special function registers (SFR's) van de CC2430 definieert.

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

      Dit bestand is ingebouwd in IAR (vergelijkbaar met stdio.h), beweeg met de muis over deze regel code, klik met de rechtermuisknop en selecteerOPen "ioCC2430.h"om de volledige inhoud van dit headerbestand te zien.

(3) Definieer de LED-pinnen

     Bekijk het circuitschema van de ontwikkelplaat als volgt:

     Hieruit blijkt dat LED1~4 wordt aangestuurd door pinnen P1_0~P4_0 respectievelijk, dus LED1, LED2, LED3 en LED4 kunnen respectievelijk worden gedefinieerd als pinnen P1_0, P2_0, P3_0 en P4_0.

#define LED1 P1_0 // Definieer LED1 als de P1_0 poortbesturing
#define LED2 P1_1 // Definieer LED2 als P1_1 poortbesturing
#define LED3 P1_2 // Definieer LED3 als P1_2 poortbesturing
#define LED4 P1_3 // Definieer LED4 als P1_3 poortbesturing

(4) hoofdfunctie

     Begin vervolgens met het schrijven van de hoofdfunctie.

     Allereerst is het, voordat je de P1.0~P1.4-poort gebruikt, noodzakelijk om de werkmodus en invoer-/uitvoerrichting in te stellen, wat twee SFR's omvat: P1SEL en P1DIR.

  P1SEL = 0x00;          Stel P1 in op de normale I/O-poort
  P1DIR |= 0x0F;          Stel P1.0, P1.1, P1.2, P1.3 als uitgang in

Zigbee Tips
De CC2430 heeft:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7In totaal 21 I/O-poorten. Ze kunnen worden gebruikt als algemene digitale I/O's of om randapparatuur IO's zoals ADC's, timing/counters of USARTs aan te sluiten.
Er zijn drie klassen registers in de SFR van de CC2430 die gebruikt kunnen worden om deze IO-poorten te configureren:
(1)PxSEL(x is 0/1/2) :P 0/P1/P2 poortfunctiekeuze
                                0: Universele numerieke IO, 1: Periferie IO, de standaard is 0
(2)PxDIR(x is 0/1/2) :P 0/P1/P2 poortrichting
                                0: input, 1: output, de standaard is 0
(3)PxINP(x is 0/1) :P 0/P1-poort invoermodus
                                0: Pull up/pull down, 1: Drie toestanden, de standaard is 0
Het moet worden geconfigureerd bij gebruik van de IO-poort, en als het standaard is, wordt de standaardwaarde van het systeem genomen.

     Hiermee initialiseer je de 4 LED's en stel je ze allemaal uit:

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

     Schrijf tenslotte de LED-lichtflitsende effectcode:

    led1 = 0;  LED1 knippert
    Vertraging(10);
    led1 = 1;
    Vertraging(10);
   
    led2 = 0;  LED2 flitst
    Vertraging(10);
    led2 = 1;
    Vertraging(10);
   
    led3 = 0;  LED3 knippert
    Vertraging(10);
    led3 = 1;
    Vertraging(10);
   
    led4 = 0;  LED4-knipperend
    Vertraging(10);
    led4 = 1;
    Vertraging(10);


     Het omvat een vertragingsubfunctie Delay(onondertekend teken n):

Void Vertraging (onondertekend teken n)  {
  onondertekende karakter I;
  Ongetekend Int J;
  for(i = 0; I < N; i++)
    for(j = 1; j; j++)
    ;
}   


(5) Codeoverzicht

      Combineer bovenstaande code tot één geheel, als volgt:

//引入头文件
#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口控制 //延时子程序
leegteVertraging(Onondertekend charn)  {
  Onondertekend charIk;
  Onondertekend intj;
  voor(i =0; I < N; i++)
    voor(j =1; j; j++)
    ;
}

leegtehoofd(leegte)
{
  P1SEL =0x00;         Stel P1 in op de normale I/O-poort
  P1DIR |=0x0F;         Stel P1.0, P1.1, P1.2, P1.3 als uitgang in
  
  led1 =1;   //初始化,4个led灯全熄
  led2 =1;
  led3 =1;
  led4 =1;
  
  terwijl(1)     //开始循环
  {
    led1 =0;  //led1闪烁
    Vertraging(10);
    led1 =1;
    Vertraging(10);
   
    led2 =0;  //led2闪烁
    Vertraging(10);
    led2 =1;
    Vertraging(10);
   
    led3 =0;  //led3闪烁
    Vertraging(10);
    led3 =1;
    Vertraging(10);
   
    led4 =0;  //led4闪烁
    Vertraging(10);
    led4 =1;
    Vertraging(10);
  }
}

     Oké, de code voor dit kleine experiment is geschreven, is het niet heel simpel, hehe~

4. Compilatie en debugging

     Selecteer Project -> Make, compileer de code, en als het lukt, verschijnt de volgende uitvoer:

     PersZigbee Development Board → Debugger → USB-interface voor pcen selecteer vervolgens Project -> Debug, en het programma wordt automatisch op het bord gedownload.

     Selecteer vervolgens Debug -> Go om het programma te starten, en je ziet vier LED-lampjes achter elkaar knipperen! Hoewel dit een klein experiment is dat te simpel is om simpel te zijn, was ik toch een beetje enthousiast toen de auteur het succesvol realiseerde~ hehe!

5. Conclusie

     Gebaseerd op het "LED-lichtflitsexperiment" introduceert dit artikel het hele implementatieproces, van de configuratie van IAR, het schrijven van programmacode en het proces van compileren en debuggen. In het volgende artikel, gebaseerd op het begrijpen van het basisproces van het ontwikkelen van het programma, introduceren we verschillende basisexperimenten voor de ontwikkeling van CC2430TimerSeriële communicatieAD-conversieSystematische slaap en waakhondenenzovoort, dus blijf op de hoogte!






Vorig:Zigbee Reis (1): De Eerste Grond Breken
Volgend:Zigbee Journey (3): Verschillende belangrijke CC2430 basisexperimenten - externe onderbreking
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com