Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 9158|Svar: 0

Zigbee Journey (2): Det första CC2430-programmet - LED-ljusblinkande experimentet

[Kopiera länk]
Publicerad på 2014-10-30 23:15:39 | | | |
1. Att koppla ihop de övre och undre nivåerna

     I föregående artikelZigbee-resan (1): Att bryta marken, introducerar vi kort Zigbee och dess utvecklingsmiljö. Okej, nu när verktygen är klara uppstår en fråga: hur använder man denna mjukvara och hårdvara för att skriva ett program som kan köras?

     Den här artikeln är i grunden för att besvara ovanstående frågor: Ta det lilla experimentet med "LED-ljusblinkning" som exempel för att introducera hur man konfigurerar IAR för att vara lämpligt för utveckling av CC2430-baserade program, och hur man använder detIARSkriv och felsök program online.

2. IAR-konfiguration

     IAR är en kraftfull inbäddad utvecklingsplattform som stödjer en mängd olika chip. Varje projekt i IAR kan ha sin egen konfiguration, inklusive enhetstyp, stack/stack, länkare, felsökare med mera.

(1) Skapa en ny arbetsyta och projekt

     Skapa först en ny mappledtest. Öppna IAR och välj huvudmenyn Fil -> Ny -> Arbetsyta för att skapa en ny arbetsyta.

     Välj Projekt -> Skapa nytt projekt -> Tomt projekt, klicka OK och spara projektfilen i mappen ledtest, kallad ledtest.ewp (som visas nedan).

(2) Konfigurera allmänna alternativ

       Målinställning: Enhet: CC2430;

                         Kodläge: Nära;

                         Datamodell: Stor;

                         Anropskonvention:XDATA-stack reetrant

     Datapekarinställning: Antal DPTR:er: 1

     Stack/Heap-inställning: XDATA-stackstorlek: 0x1FF

(3) Linkerinställningar

     Linker-kommandofil: Välj lnk51ew_cc2430.xcl

(4) Debugger-inställningar:

     Drivrutin: Texas Instruments (Detta experiment är en riktig maskinfelsökning, så välj TI; Om andra program vill använda IAR-simulatorn kan du välja Simulator)
     Enhetsbeskrivningsfil:CC2430.ddf

      Vid denna punkt är IAR-konfigurationen för detta experiment i princip över, och följande är en introduktion till dess kodningsimplementation.

3. Skriva programkod(1) Skapa ett nytt processuellt dokument

      Välj Fil->Ny->Fil och skapa en ny fil main.c.

(2) Introducera headerfiler

      Program baserade på CC2430 måste inkludera en referens till ioCC2430.h, som definierar adressmappningen av CC2430:s olika specialfunktionsregister (SFR).

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

      Denna fil är inbyggd i IAR (liknande stdio.h), håll muspekaren över denna kodrad, högerklicka, väljOPen "ioCC2430.h"för att se hela innehållet i denna headerfil.

(3) Definiera LED-stiften

     Se utvecklingskortets kretsdiagram enligt följande:

     Det kan ses att LED1~4 styrs av stift P1_0~P4_0 respektive, så LED1, LED2, LED3 och LED4 kan definieras som stift P1_0, P2_0, P3_0 respektive P4_0.

#define LED1 P1_0 // Definiera LED1 som P1_0 portstyrning
#define LED2 P1_1 // Definiera LED2 som P1_1 portstyrning
#define LED3 P1_2 // Definiera LED3 som P1_2 portkontroll
#define LED4 P1_3 // Definiera LED4 som P1_3 portstyrning

(4) huvudfunktion

     Börja sedan skriva huvudfunktionen.

     För det första, innan man använder P1.0~P1.4-porten, är det nödvändigt att ställa in dess arbetsläge och in-/utmatningsriktning, vilket involverar två SFR:er: P1SEL och P1DIR.

  P1SEL = 0x00;          Ställ in P1 som den vanliga I/O-porten
  P1DIR |= 0x0F;          Sätt P1.0, P1.1, P1.2, P1.3 som utgång

Zigbee-tips
CC2430 har:P0_0 ~ P0_7 , P1_0~P1_7 , P2_0~P2_7Totalt 21 I/O-portar. De kan användas som allmänna digitala I/O:er eller för att ansluta kringutrustnings-IO:er såsom ADC:er, timing/räknare eller USART:er.
Det finns tre klasser av register i CC2430:s SFR som kan användas för att konfigurera dessa IO-portar:
(1)PxSEL(x är 0/1/2) :P 0/P1/P2 portfunktionsval
                                0: Universell numerisk IO, 1: Periferiär IO, standard är 0
(2)PxDIR(x är 0/1/2) :P 0/P1/P2 portriktning
                                0: ingång, 1: utmatning, standardvärdet är 0
(3)PxINP(x är 0/1) :P 0/P1-portens ingångsläge
                                0: Dra upp/dra ner, 1: Tre tillstånd, standardvärdet är 0
Den måste konfigureras när IO-porten används, och om den är standard tas systemets standardvärde.

     Initialiserar sedan de 4 LED-lamporna och ställer in dem på att alla släcks:

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

     Slutligen, skriv LED-ljusblinkande effektkoden:

    led1 = 0;  LED1 blinkar
    Delay(10);
    led1 = 1;
    Delay(10);
   
    led2 = 0;  LED2-blinkar
    Delay(10);
    led2 = 1;
    Delay(10);
   
    led3 = 0;  LED3 blinkar
    Delay(10);
    led3 = 1;
    Delay(10);
   
    led4 = 0;  LED4-blinkande
    Delay(10);
    led4 = 1;
    Delay(10);


     Den involverar en fördröjningsdelfunktion Delay (osignerat tecken n):

void Delay (osignerad tecken n)  {
  osignerad char i;
  osignerad int J;
  för(i = 0; I < n; i++)
    för(j = 1; j; j++)
    ;
}   


(5) Kodöversikt

      Kombinera ovanstående kod till en enda helhet, enligt följande:

//引入头文件
#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口控制 //延时子程序
tomrumFördröjning(osignerad charn)  {
  osignerad chari;
  osignerad intj;
  för(i =0; I < n; i++)
    för(j =1; j; j++)
    ;
}

tomrumhuvud(tomrum)
{
  P1SEL =0x00;         Ställ in P1 som den vanliga I/O-porten
  P1DIR |=0x0F;         Sätt P1.0, P1.1, P1.2, P1.3 som utgång
  
  led1 =1;   //初始化,4个led灯全熄
  led2 =1;
  led3 =1;
  led4 =1;
  
  medan(1)     //开始循环
  {
    led1 =0;  //led1闪烁
    Fördröjning(10);
    led1 =1;
    Fördröjning(10);
   
    led2 =0;  //led2闪烁
    Fördröjning(10);
    led2 =1;
    Fördröjning(10);
   
    led3 =0;  //led3闪烁
    Fördröjning(10);
    led3 =1;
    Fördröjning(10);
   
    led4 =0;  //led4闪烁
    Fördröjning(10);
    led4 =1;
    Fördröjning(10);
  }
}

     Okej, koden för det här lilla experimentet är skriven, är det inte väldigt enkelt, hehe~

4. Kompilering och felsökning

     Välj Projekt -> Make, kompilera koden, och om det lyckas visas följande utdata:

     PressZigbee Development Board → Debugger → USB-gränssnitt för PCoch välj sedan Project -> Debug, och programmet laddas automatiskt ner till tavlan.

     Välj sedan Debug -> Gå för att starta programmet, och du kommer att se fyra LED-lampor blinka i tur och ordning! Även om detta är ett litet experiment som är för enkelt för att vara enkelt, blev jag ändå lite exalterad när författaren lyckades genomföra det~ hehe!

5. Slutsats

     Baserat på "LED-ljusblinkexperimentet" introducerar denna artikel hela implementeringsprocessen från konfigurationen av IAR, skrivandet av programkod till processen för kompilering och felsökning. I nästa artikel, baserat på förståelsen av den grundläggande processen för att utveckla programmet, kommer vi att introducera flera grundläggande experiment för CC2430-utvecklingenTimerSeriell kommunikationAD-konverteringSystematisk sömn samt vakthundarosv., så håll utkik!






Föregående:Zigbee Journey (1): Att bryta marken
Nästa:Zigbee-resan (3): Flera viktiga grundläggande CC2430-experiment – extern avbrott
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com